. * * @package LibreNMS * @link http://librenms.org * @copyright 2018 Tony Murray * @author Tony Murray */ namespace App\Extensions; use App\Models\User; use Illuminate\Contracts\Auth\Authenticatable; use Illuminate\Contracts\Auth\UserProvider; use LibreNMS\Authentication\Auth as LegacyAuth; use LibreNMS\Exceptions\AuthenticationException; class LegacyUserProvider implements UserProvider { /** * Retrieve a user by their unique identifier. * * @param mixed $identifier * @return \Illuminate\Contracts\Auth\Authenticatable|null */ public function retrieveById($identifier) { $user_array = LegacyAuth::get()->getUser($identifier); if (empty($user_array)) { return null; } $user = new User($user_array); $user->user_id = $user_array['user_id']; return $user; } /** * Retrieve a user by their unique identifier and "remember me" token. * * @param mixed $identifier * @param string $token * @return \Illuminate\Contracts\Auth\Authenticatable|null */ public function retrieveByToken($identifier, $token) { // TODO: Implement retrieveByToken() method. } /** * Update the "remember me" token for the given user in storage. * * @param \Illuminate\Contracts\Auth\Authenticatable $user * @param string $token * @return void */ public function updateRememberToken(Authenticatable $user, $token) { // TODO: Implement updateRememberToken() method. } /** * Retrieve a user by the given credentials. * * @param array $credentials * @return \Illuminate\Contracts\Auth\Authenticatable|null */ public function retrieveByCredentials(array $credentials) { $username = $credentials['username']; $user_id = LegacyAuth::get()->getUserid($username); return $this->retrieveById($user_id); } /** * Validate a user against the given credentials. * * @param \Illuminate\Contracts\Auth\Authenticatable $user * @param array $credentials * @return bool */ public function validateCredentials(Authenticatable $user, array $credentials) { try { return LegacyAuth::get()->authenticate($credentials['username'], $credentials['password']); } catch (AuthenticationException $e) { \Toastr::error($e->getMessage()); } return null; } }