diff options
Diffstat (limited to 'src/CamilStaps/BotleaguesApi/ActivationCodeAuthenticationProvider.php')
-rw-r--r-- | src/CamilStaps/BotleaguesApi/ActivationCodeAuthenticationProvider.php | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/CamilStaps/BotleaguesApi/ActivationCodeAuthenticationProvider.php b/src/CamilStaps/BotleaguesApi/ActivationCodeAuthenticationProvider.php new file mode 100644 index 0000000..049dfc4 --- /dev/null +++ b/src/CamilStaps/BotleaguesApi/ActivationCodeAuthenticationProvider.php @@ -0,0 +1,53 @@ +<?php +/** + * Created by PhpStorm. + * User: camilstaps + * Date: 24-5-15 + * Time: 13:10 + */ + +namespace CamilStaps\BotleaguesApi; + +use CamilStaps\BotleaguesApi\Database\PasswordReminder; +use CamilStaps\BotleaguesApi\Database\User; +use Dingo\Api\Auth\Provider\Provider; +use Dingo\Api\Routing\Route; +use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\DB; +use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException; + +class ActivationCodeAuthenticationProvider implements Provider { + + /** + * Authenticate the request and return the authenticated user instance. + * + * @param \Illuminate\Http\Request $request + * @param \Dingo\Api\Routing\Route $route + * + * @throw UnauthorizedHttpException invalid authentication + * + * @return mixed + */ + public function authenticate(Request $request, Route $route) { + $user = User::findOrFail($request->route('user')); + $passwordReminder = PasswordReminder::find($request->route('password_reminder')); + + if (!empty($user) && !empty($passwordReminder) && $passwordReminder->userId == $user->id) { + $passwordReminder->useToken(); + Auth::login($user); + return Auth::user(); + } + + throw new UnauthorizedHttpException(null, "Invalid credentials"); + } + + /** + * Get the providers authorization method. + * + * @return string + */ + public function getAuthorizationMethod() { + return 'activationcode'; + } +}
\ No newline at end of file |