Advertisement
Guest User

Untitled

a guest
Sep 14th, 2016
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.22 KB | None | 0 0
  1. # To get started with security, check out the documentation:
  2. # http://symfony.com/doc/current/book/security.html
  3. security:
  4. encoders:
  5. AppBundleEntityUsers: bcrypt
  6. AppBundleEntityAdmin: bcrypt
  7.  
  8. # http://symfony.com/doc/current/book/security.html#where-do-users-come-from-user-providers
  9. providers:
  10. chain_provider:
  11. chain:
  12. providers: [admin, users]
  13. users:
  14. entity:
  15. class: AppBundle:Users
  16. property: username
  17. admin:
  18. entity:
  19. class: AppBundle:Admin
  20. property: username
  21.  
  22. firewalls:
  23. # disables authentication for assets and the profiler, adapt it according to your needs
  24. user_secured_area:
  25. pattern: ^/
  26. anonymous: ~
  27. provider: chain_provider
  28. form_login:
  29. login_path: login_user
  30. check_path: login_user
  31. csrf_token_generator: security.csrf.token_manager
  32. default_target_path: /
  33. logout:
  34. path: /logout
  35. target: /
  36.  
  37. access_control:
  38. # require ROLE_ADMIN for /admin*
  39. - { path: ^/admin, roles: ROLE_ADMIN }
  40.  
  41. # Learn more about services, parameters and containers at
  42. # http://symfony.com/doc/current/book/service_container.html
  43. parameters:
  44. # parameter_name: value
  45.  
  46. services:
  47. # service_name:
  48. # class: AppBundleDirectoryClassName
  49. # arguments: ["@another_service_name", "plain_value", "%parameter_name%"]
  50. app.user_locale_listener:
  51. class: AppBundleEventListenerUserLocaleListener
  52. arguments: ['@session']
  53. tags:
  54. - { name: kernel.event_listener, event: security.interactive_login, method: onInteractiveLogin }
  55.  
  56. <?php
  57.  
  58. namespace AppBundleEntity;
  59.  
  60. use DoctrineORMMapping as ORM;
  61. use DoctrineCommonCollectionsArrayCollection;
  62. use SymfonyComponentValidatorConstraints as Assert;
  63. use SymfonyComponentSecurityCoreUserUserInterface;
  64. use SymfonyBridgeDoctrineValidatorConstraintsUniqueEntity;
  65.  
  66.  
  67.  
  68. /**
  69. * @ORMEntity
  70. * @ORMTable(name="users")
  71. * @ORMEntity(repositoryClass="UsersRepository")
  72. * @UniqueEntity("username")
  73. * @UniqueEntity("email")
  74. */
  75. class Users implements UserInterface, Serializable
  76. {
  77. /**
  78. * @ORMColumn(type="integer")
  79. * @ORMId
  80. * @ORMGeneratedValue(strategy="AUTO")
  81. */
  82. private $id;
  83.  
  84. /**
  85. * @ORMColumn(type="text")
  86. * @AssertNotBlank()
  87. */
  88. private $name;
  89.  
  90. /**
  91. * @ORMColumn(type="text")
  92. * @AssertNotBlank()
  93. */
  94. private $lastname;
  95.  
  96. /**
  97. * @ORMColumn(type="text")
  98. * @AssertNotBlank()
  99. */
  100. private $username;
  101.  
  102. /**
  103. * @ORMColumn(type="string", length=255, unique=true)
  104. * @AssertNotBlank()
  105. * @AssertEmail()
  106. */
  107. private $email;
  108.  
  109. /**
  110. *
  111. * @AssertLength(max=4096)
  112. */
  113. private $plainPassword;
  114.  
  115. /**
  116. *
  117. * @ORMColumn(type="string", length=64)
  118. */
  119. private $password;
  120.  
  121. /**
  122. * @ORMColumn(type="text")
  123. * @AssertNotBlank()
  124. */
  125. private $language;
  126.  
  127. /**
  128. * @ORMColumn(type="boolean")
  129. */
  130. private $isActive;
  131.  
  132.  
  133. /*****************
  134. * Users constructor.
  135. */
  136. public function __construct() {
  137. $this->language = 'es';
  138. $this->isActive = true;
  139. }
  140.  
  141. /**
  142. * @return mixed
  143. */
  144. public function getId()
  145. {
  146. return $this->id;
  147. }
  148.  
  149. /**
  150. * @param mixed $id
  151. */
  152. public function setId($id)
  153. {
  154. $this->id = $id;
  155. }
  156.  
  157. /**
  158. * @return mixed
  159. */
  160. public function getName()
  161. {
  162. return $this->name;
  163. }
  164.  
  165. /**
  166. * @param mixed $name
  167. */
  168. public function setName($name)
  169. {
  170. $this->name = $name;
  171. }
  172.  
  173. /**
  174. * @return mixed
  175. */
  176. public function getLastname()
  177. {
  178. return $this->lastname;
  179. }
  180.  
  181. /**
  182. * @param mixed $lastname
  183. */
  184. public function setLastname($lastname)
  185. {
  186. $this->lastname = $lastname;
  187. }
  188.  
  189. /**
  190. * @return mixed
  191. */
  192. public function getUsername()
  193. {
  194. return $this->username;
  195. }
  196.  
  197. /**
  198. * @param mixed $username
  199. */
  200. public function setUsername($username)
  201. {
  202. $this->username = $username;
  203. }
  204.  
  205. /**
  206. * @return mixed
  207. */
  208. public function getEmail()
  209. {
  210. return $this->email;
  211. }
  212.  
  213. /**
  214. * @param mixed $email
  215. */
  216. public function setEmail($email)
  217. {
  218. $this->email = $email;
  219. }
  220.  
  221. /**
  222. * @return mixed
  223. */
  224. public function getPlainPassword()
  225. {
  226. return $this->plainPassword;
  227. }
  228.  
  229. /**
  230. * @param mixed $plainPassword
  231. */
  232. public function setPlainPassword($plainPassword)
  233. {
  234. $this->plainPassword = $plainPassword;
  235. }
  236.  
  237. /**
  238. * @return mixed
  239. */
  240. public function getPassword()
  241. {
  242. return $this->password;
  243. }
  244.  
  245. /**
  246. * @param mixed $password
  247. */
  248. public function setPassword($password)
  249. {
  250. $this->password = $password;
  251. }
  252.  
  253. /**
  254. * @return mixed
  255. */
  256. public function getLanguage()
  257. {
  258. return $this->language;
  259. }
  260.  
  261. /**
  262. * @param mixed $language
  263. */
  264. public function setLanguage($language)
  265. {
  266. $this->language = $language;
  267. }
  268.  
  269. /**
  270. * @return mixed
  271. */
  272. public function getIsActive()
  273. {
  274. return $this->isActive;
  275. }
  276.  
  277. /**
  278. * @param mixed $isActive
  279. */
  280. public function setIsActive($isActive)
  281. {
  282. $this->isActive = $isActive;
  283. }
  284.  
  285. //implementaciones de la interface
  286.  
  287. public function getSalt()
  288. {
  289. // you *may* need a real salt depending on your encoder
  290. // see section on salt below
  291. return null;
  292. }
  293.  
  294. public function getRoles()
  295. {
  296. return array('ROLE_USER');
  297. }
  298.  
  299. public function eraseCredentials()
  300. {
  301. }
  302.  
  303. /** @see Serializable::serialize() */
  304. public function serialize()
  305. {
  306. return serialize(array(
  307. $this->id,
  308. $this->username,
  309. $this->password,
  310. $this->isActive,
  311. ));
  312. }
  313.  
  314. /** @see Serializable::unserialize() */
  315. public function unserialize($serialized)
  316. {
  317. list (
  318. $this->id,
  319. $this->username,
  320. $this->password,
  321. $this->isActive,
  322. ) = unserialize($serialized);
  323. }
  324. }
  325.  
  326. namespace AppBundleController;
  327.  
  328.  
  329. use AppBundleEntityAdmin;
  330. use AppBundleEntityUsers;
  331. use AppBundleFormAdminFormType;
  332. use AppBundleFormUserFormType;
  333. use SymfonyComponentHttpFoundationRequest;
  334. use SensioBundleFrameworkExtraBundleConfigurationRoute;
  335. use AppBundleControllerBaseController;
  336. use SymfonyComponentHttpFoundationJsonResponse;
  337.  
  338.  
  339. class SecurityController extends BaseController
  340. {
  341.  
  342. /**
  343. * @Route("/signup", name="signup")
  344. * @param Request $request
  345. * @return response
  346. */
  347. public function guardarUser(Request $request)
  348. {
  349. $user = new Users();
  350.  
  351. $em = $this->getDoctrine()->getManager();
  352.  
  353. $em->persist($user);
  354.  
  355. $form = $this->createForm(UserFormType::class, $user);
  356.  
  357. $form->handleRequest($request);
  358.  
  359. if($form->isSubmitted() && $form->isValid()){
  360. $password = $this->get('security.password_encoder')->encodePassword($user, $user->getPlainPassword());
  361. $user->setPassword($password);
  362. $em = $this->getDoctrine()->getManager();
  363. $em->flush();
  364.  
  365. return $this->redirectToRoute('signup');
  366. }
  367.  
  368. $this->addData('formUser', $form->createView());
  369. return $this->render('AppBundle:signup:signup.html.twig', $this->getData());
  370. }
  371.  
  372. /**
  373. * @Route("/login", name="login_user")
  374. * @param Request $request
  375. * @return SymfonyComponentHttpFoundationResponse
  376. */
  377. public function showLogin(Request $request)
  378. {
  379. $authenticationUtils = $this->get('security.authentication_utils');
  380.  
  381. // get the login error if there is one
  382. $error = $authenticationUtils->getLastAuthenticationError();
  383.  
  384. // last username entered by the user
  385. $lastUsername = $authenticationUtils->getLastUsername();
  386.  
  387. $this->addData('last_username', $lastUsername);
  388. $this->addData('error', $error);
  389. return $this->render('AppBundle:login:login.html.twig', $this->getData());
  390. }
  391. }
  392.  
  393. <div id="signupForm" class="row">
  394. {% if error %}
  395. <div>{{ error.messageKey|trans(error.messageData, 'security') }}</div>
  396. {% endif %}
  397.  
  398. {% if last_username %}
  399. {{ last_username }}
  400. {% endif %}
  401.  
  402. <!-- Formulario para iniciar sesión -->
  403. <form action="{{ path('login_user') }}" method="post">
  404. <div class="row">
  405. <div class="input-field col s12">
  406. <input type="text" id="username" name="_username" value="{{ last_username }}" />
  407. <label for="username">Nombre usuario</label>
  408. </div>
  409. </div>
  410.  
  411. <div class="row">
  412. <div class="input-field col s12">
  413. <input type="password" id="password" name="_password" />
  414. <label for="password">Constraseña</label>
  415. </div>
  416. </div>
  417.  
  418. <input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}">
  419.  
  420. <input type="submit" value="Accede">
  421. </form>
  422.  
  423. <!-- ¿Has olvidado el password? -->
  424. <p id="forgotPassword"><a href="/login">¿Se te ha olvidado el nombre de usuario o la contraseña?</a></p>
  425.  
  426. <!-- Redirige a /signup -->
  427. <p id="tienesCuenta">¿No tienes cuenta? <a href="/signup">Registrate</a></p>
  428.  
  429. <!-- Linia gris que divide -->
  430. <div class="divider"></div>
  431.  
  432. <!-- Aceptas los terminos y politicas de privacidad -->
  433. <p id="terminos">Si haces click en iniciar sesión con Facebook/Gmail y no eres usuario de My appLibrary, pasarás a estar registrado y aceptas los <a href="/terminos">Términos y condiciones</a>
  434. y la <a href="politicas">Política de privacidad</a>de My appLibrary.</p>
  435. </div>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement