partkeepr

fork of partkeepr
git clone https://git.e1e0.net/partkeepr.git
Log | Files | Refs | Submodules | README | LICENSE

commit f701ebb49a73d5ca4ba6aa40763894375023e3c5
parent 8d925cda1cd88d7186638766efa979310baf5f2f
Author: Felicitus <felicitus@felicitus.org>
Date:   Mon, 28 Sep 2015 14:19:10 +0200

Return the user after the login action as JSON-LD, instanciate a user in the frontend instead of a plain data object

Diffstat:
Mapp/config/config.yml | 13++++++++++++-
Asrc/PartKeepr/AuthBundle/Action/LoginAction.php | 40++++++++++++++++++++++++++++++++++++++++
Msrc/PartKeepr/AuthBundle/Controller/DefaultController.php | 16----------------
Msrc/PartKeepr/AuthBundle/Resources/config/actions.xml | 4++++
Msrc/PartKeepr/FrontendBundle/Resources/public/js/Components/Auth/AuthenticationProvider.js | 6+++++-
5 files changed, 61 insertions(+), 18 deletions(-)

diff --git a/app/config/config.yml b/app/config/config.yml @@ -991,6 +991,17 @@ services: - "partkeepr.user_preference.set_preference" # Controller - "PartKeeprUserPreferenceSet" + resource.user.item_operation.login: + class: "Dunglas\ApiBundle\Api\Operation\Operation" + public: false + factory: [ "@api.operation_factory", "createItemOperation" ] + arguments: + - "@resource.user" # Resource + - [ "POST" ] # Methods + - "/users/login" # Path + - "partkeepr.auth.login" # Controller + - "PartKeeprAuthLogin" + resource.user.item_operation.get: class: "Dunglas\ApiBundle\Api\Operation\Operation" public: false @@ -1019,7 +1030,7 @@ services: - method: "initNormalizationContext" arguments: [ { groups: [ "default" ] } ] - method: "initItemOperations" - arguments: [ [ "@resource.user.item_operation.get", "@resource.user.item_operation.get", "@resource.tempfile.item_operation.put", "@resource.user.item_operation.delete", "@resource.user.item_operation.get_preferences", "@resource.user.item_operation.set_preference" ] ] + arguments: [ [ "@resource.user.item_operation.get", "@resource.user.item_operation.get", "@resource.tempfile.item_operation.put", "@resource.user.item_operation.delete", "@resource.user.item_operation.get_preferences", "@resource.user.item_operation.set_preference", "@resource.user.item_operation.login" ] ] - method: "initDenormalizationContext" arguments: - { groups: [ "default" ] } diff --git a/src/PartKeepr/AuthBundle/Action/LoginAction.php b/src/PartKeepr/AuthBundle/Action/LoginAction.php @@ -0,0 +1,40 @@ +<?php + + +namespace PartKeepr\AuthBundle\Action; + + +use Dunglas\ApiBundle\Action\ActionUtilTrait; +use Dunglas\ApiBundle\Api\ResourceInterface; +use PartKeepr\AuthBundle\Services\UserService; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\Serializer\Serializer; + +class LoginAction +{ + use ActionUtilTrait; + + /** + * @var UserService + */ + private $userService; + + /** + * @var Serializer + */ + private $serializer; + + public function __construct( + UserService $userService, + Serializer $serializer + ) { + $this->userService = $userService; + $this->serializer = $serializer; + } + + public function __invoke (Request $request) { + $user = $this->userService->getUser(); + + return $user; + } +} diff --git a/src/PartKeepr/AuthBundle/Controller/DefaultController.php b/src/PartKeepr/AuthBundle/Controller/DefaultController.php @@ -51,20 +51,4 @@ class DefaultController extends FOSRestController return false; } } - - /** - * Attempts to login the user - * - * @Routing\Route("/api/users/login", defaults={"method" = "post","_format" = "json"}) - * @Routing\Method({"POST"}) - * @View() - * - * @return User The user object - */ - public function loginAction() - { - $user = $this->get("partkeepr.userservice")->getUser(); - - return $user; - } } diff --git a/src/PartKeepr/AuthBundle/Resources/config/actions.xml b/src/PartKeepr/AuthBundle/Resources/config/actions.xml @@ -15,5 +15,9 @@ <argument type="service" id="partkeepr.user_preference_service"/> <argument type="service" id="api.serializer"/> </service> + <service id="partkeepr.auth.login" class="PartKeepr\AuthBundle\Action\LoginAction"> + <argument type="service" id="partkeepr.userservice"/> + <argument type="service" id="api.serializer"/> + </service> </services> </container> diff --git a/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Auth/AuthenticationProvider.js b/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Auth/AuthenticationProvider.js @@ -119,7 +119,11 @@ Ext.define('PartKeepr.Auth.AuthenticationProvider', { if (response.status == "401") { this.fireEvent("authenticate", false); } else { - this.setUser(Ext.decode(response.responseText)); + var user = Ext.create("PartKeepr.AuthBundle.Entity.User", + Ext.decode(response.responseText) + ); + + this.setUser(user); this.fireEvent("authenticate", true); } },