예제 #1
0
 /**
  * @param Request $request
  * @param array $routeParams
  * @return \Psr\Http\Message\ResponseInterface
  */
 public function handle(Request $request, array $routeParams = [])
 {
     $user = app('flarum.actor');
     if ($user->exists) {
         $token = array_get($request->getQueryParams(), 'token');
         AccessToken::where('user_id', $user->id)->findOrFail($token);
         $user->accessTokens()->delete();
         event(new UserLoggedOut($user));
     }
     return $this->withForgetCookie($this->redirectTo('/'));
 }
예제 #2
0
 /**
  * @param Request $request
  * @param array $routeParams
  * @return \Psr\Http\Message\ResponseInterface
  */
 public function handle(Request $request, array $routeParams = [])
 {
     $user = $request->getAttribute('actor');
     if ($user->exists) {
         $token = array_get($request->getQueryParams(), 'token');
         AccessToken::where('user_id', $user->id)->findOrFail($token);
         $user->accessTokens()->delete();
         $this->events->fire(new UserLoggedOut($user));
     }
     return $this->withForgetCookie(new RedirectResponse($this->app->url()));
 }
예제 #3
0
 /**
  * @param Request $request
  * @param array $routeParams
  *
  * @return JsonResponse
  */
 public function handle(Request $request, array $routeParams = [])
 {
     $params = ['data' => ['attributes' => $request->getAttributes()]];
     $apiResponse = $this->apiClient->send(app('flarum.actor'), 'Flarum\\Api\\Actions\\Users\\CreateAction', $params);
     $body = $apiResponse->getBody();
     $statusCode = $apiResponse->getStatusCode();
     $response = new JsonResponse($body, $statusCode);
     if (!empty($body->data->attributes->isActivated)) {
         $token = $this->bus->dispatch(new GenerateAccessToken($body->data->id));
         // Extend the token's expiry to 2 weeks so that we can set a
         // remember cookie
         AccessToken::where('id', $token->id)->update(['expires_at' => new DateTime('+2 weeks')]);
         return $this->withRememberCookie($response, $token->id);
     }
     return $response;
 }
예제 #4
0
 /**
  * @param Request $request
  * @param array $routeParams
  * @return JsonResponse|EmptyResponse
  */
 public function handle(Request $request, array $routeParams = [])
 {
     $params = array_only($request->getAttributes(), ['identification', 'password']);
     $data = $this->apiClient->send(app('flarum.actor'), 'Flarum\\Api\\Actions\\TokenAction', $params)->getBody();
     // TODO: The client needs to pass through exceptions(?) or the whole
     // response so we can look at the response code. For now if there isn't
     // any useful data we just assume it's a 401.
     if (isset($data->userId)) {
         // Extend the token's expiry to 2 weeks so that we can set a
         // remember cookie
         AccessToken::where('id', $data->token)->update(['expires_at' => new DateTime('+2 weeks')]);
         event(new UserLoggedIn($this->users->findOrFail($data->userId), $data->token));
         return $this->withRememberCookie(new JsonResponse($data), $data->token);
     } else {
         return new EmptyResponse(401);
     }
 }
예제 #5
0
 /**
  * @param Request $request
  * @param array $routeParams
  * @return JsonResponse|EmptyResponse
  */
 public function handle(Request $request, array $routeParams = [])
 {
     $controller = 'Flarum\\Api\\Controller\\TokenController';
     $actor = $request->getAttribute('actor');
     $params = array_only($request->getParsedBody(), ['identification', 'password']);
     $response = $this->apiClient->send($controller, $actor, [], $params);
     if ($response->getStatusCode() === 200) {
         $data = json_decode($response->getBody());
         // Extend the token's expiry to 2 weeks so that we can set a
         // remember cookie
         AccessToken::where('id', $data->token)->update(['expires_at' => new DateTime('+2 weeks')]);
         event(new UserLoggedIn($this->users->findOrFail($data->userId), $data->token));
         return $this->withRememberCookie($response, $data->token);
     } else {
         return $response;
     }
 }
예제 #6
0
 /**
  * @param Request $request
  * @param array $routeParams
  *
  * @return JsonResponse
  */
 public function handle(Request $request, array $routeParams = [])
 {
     $controller = 'Flarum\\Api\\Controller\\CreateUserController';
     $actor = $request->getAttribute('actor');
     $body = ['data' => ['attributes' => $request->getParsedBody()]];
     $response = $this->api->send($controller, $actor, [], $body);
     $body = json_decode($response->getBody());
     $statusCode = $response->getStatusCode();
     $response = new JsonResponse($body, $statusCode);
     if (!empty($body->data->attributes->isActivated)) {
         $token = $this->bus->dispatch(new GenerateAccessToken($body->data->id));
         // Extend the token's expiry to 2 weeks so that we can set a
         // remember cookie
         AccessToken::where('id', $token->id)->update(['expires_at' => new DateTime('+2 weeks')]);
         return $this->withRememberCookie($response, $token->id);
     }
     return $response;
 }