Advertisement
Guest User

Untitled

a guest
Dec 28th, 2016
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.21 KB | None | 0 0
  1. namespace AppBundleSecurityUser;
  2.  
  3. use SymfonyComponentSecurityCoreUserUserInterface;
  4. use SymfonyComponentSecurityCoreUserEquatableInterface;
  5.  
  6. class WebserviceUser implements UserInterface, EquatableInterface
  7. {
  8. private $username;
  9. private $password;
  10. private $salt;
  11. private $roles;
  12.  
  13. public function __construct($username, $password, $salt, array $roles)
  14. {
  15. $this->username = $username;
  16. $this->password = $password;
  17. $this->salt = $salt;
  18. $this->roles = $roles;
  19. }
  20.  
  21. public function getRoles()
  22. {
  23. return $this->roles;
  24. }
  25.  
  26. public function getPassword()
  27. {
  28. return $this->password;
  29. }
  30.  
  31. public function getSalt()
  32. {
  33. return $this->salt;
  34. }
  35.  
  36. public function getUsername()
  37. {
  38. return $this->username;
  39. }
  40.  
  41. public function eraseCredentials()
  42. {
  43. }
  44.  
  45. public function isEqualTo(UserInterface $user)
  46. {
  47. if (!$user instanceof WebserviceUser) {
  48. return false;
  49. }
  50.  
  51. if ($this->password !== $user->getPassword()) {
  52. return false;
  53. }
  54.  
  55. if ($this->salt !== $user->getSalt()) {
  56. return false;
  57. }
  58.  
  59. if ($this->username !== $user->getUsername()) {
  60. return false;
  61. }
  62.  
  63. return true;
  64. }
  65. }
  66.  
  67. namespace AppBundleSecurityUser;
  68.  
  69. use AppBundleSecurityUserWebserviceUser;
  70. use SymfonyComponentSecurityCoreUserUserProviderInterface;
  71. use SymfonyComponentSecurityCoreUserUserInterface;
  72. use SymfonyComponentSecurityCoreExceptionUsernameNotFoundException;
  73. use SymfonyComponentSecurityCoreExceptionUnsupportedUserException;
  74.  
  75. class WebserviceUserProvider implements UserProviderInterface
  76. {
  77. public function loadUserByUsername($username)
  78. {
  79. // make a call to your webservice here
  80. $userData = ...
  81. // pretend it returns an array on success, false if there is no user
  82.  
  83. if ($userData) {
  84. $password = '...';
  85.  
  86. // ...
  87.  
  88. return new WebserviceUser($username, $password, $salt, $roles);
  89. }
  90.  
  91. throw new UsernameNotFoundException(
  92. sprintf('Username "%s" does not exist.', $username)
  93. );
  94. }
  95.  
  96. public function refreshUser(UserInterface $user)
  97. {
  98. if (!$user instanceof WebserviceUser) {
  99. throw new UnsupportedUserException(
  100. sprintf('Instances of "%s" are not supported.', get_class($user))
  101. );
  102. }
  103.  
  104. return $this->loadUserByUsername($user->getUsername());
  105. }
  106.  
  107. public function supportsClass($class)
  108. {
  109. return WebserviceUser::class === $class;
  110. }
  111. }
  112.  
  113. namespace AppBundleController;
  114.  
  115.  
  116.  
  117. use AppBundleControllerBaseController;
  118. use SymfonyComponentHttpFoundationRequest;
  119. use SensioBundleFrameworkExtraBundleConfigurationRoute;
  120. use AppBundleSecurityUserWebserviceUser;
  121.  
  122.  
  123. class SecurityController extends BaseController
  124. {
  125. /**
  126. * @Route("/login", name="login")
  127. */
  128.  
  129. public function loginAction(Request $request)
  130. {
  131.  
  132. $authenticationUtils = $this->get('security.authentication_utils');
  133.  
  134.  
  135.  
  136. // get the login error if there is one
  137. $error = $authenticationUtils->getLastAuthenticationError();
  138.  
  139. // last username entered by the user
  140. $lastUsername = $authenticationUtils->getLastUsername();
  141.  
  142. return $this->render('security/login.html.twig', array(
  143. 'last_username' => $lastUsername,
  144. 'error' => $error
  145. ));
  146. }
  147.  
  148.  
  149. }
  150.  
  151. {% extends 'base.html.twig' %}
  152.  
  153. {% block body %}
  154.  
  155.  
  156.  
  157. <div class="wrapper fullscreen">
  158.  
  159. <div class="image_full">
  160.  
  161. </div>
  162. <div class="small_content">
  163. <a href="" class="logo_small"></a>
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170. <form action="{{ path('login') }}" method="post">
  171.  
  172. {% if error %}
  173. <p class="text-danger text-center">{{ error.messageKey|trans(error.messageData, 'security') }}</p>
  174. {% endif %}
  175.  
  176. <div class="form-group">
  177. <label for="exampleInputEmail1">Email-Adresse</label>
  178. <input type="email" class="form-control" id="exampleInputEmail1" placeholder="Email" name="_username" value="{{ last_username }}">
  179. </div>
  180. <div class="form-group">
  181. <label for="exampleInputPassword1">Passwort</label>
  182. <input type="password" class="form-control" id="exampleInputPassword1" placeholder="Passwort" name="_password">
  183. </div>
  184.  
  185. <div class="col-md-6 left">
  186. <button type="submit" class="btn btn-default green btn_full">Anmelden</button>
  187. <!--<a class="btn btn-default green btn_full" href="">Anmelden</a>-->
  188. </div>
  189. <div class="col-md-6 right">
  190. <a class="btn btn-default green btn_full" href="{{ path('register') }}">Registrieren</a>
  191. </div>
  192. <!--<button type="submit" class="btn btn-default green btn_full">Einloggen</button>-->
  193.  
  194. </form>
  195. </div>
  196. </div>
  197.  
  198.  
  199.  
  200. {% endblock %}
  201.  
  202. # To get started with security, check out the documentation:
  203. # http://symfony.com/doc/current/book/security.html
  204. security:
  205.  
  206. # http://symfony.com/doc/current/book/security.html#where-do-users-come-from-user-providers
  207. providers:
  208. #in_memory:
  209. #memory: ~
  210. webservice:
  211. id: app.webservice_user_provider
  212.  
  213. hide_user_not_found: false
  214. #erase_credentials: true
  215. firewalls:
  216. # disables authentication for assets and the profiler, adapt it according to your needs
  217. #dev:
  218. # pattern: ^/(_(profiler|wdt)|css|images|js)/
  219. # security: false
  220.  
  221. main:
  222. anonymous: ~
  223. form_login:
  224. login_path: login
  225. check_path: login
  226. logout:
  227. path: /logout
  228. target: /
  229. # activate different ways to authenticate
  230.  
  231. # http_basic: ~
  232. # http://symfony.com/doc/current/book/security.html#a-configuring-how-your-users-will-authenticate
  233.  
  234. # form_login: ~
  235. # http://symfony.com/doc/current/cookbook/security/form_login_setup.html
  236.  
  237. encoders:
  238. AppBundleSecurityUserWebserviceUser: plaintext
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement