[Beeframework-svn] SF.net SVN: beeframework:[75] trunk/framework/Bee
Brought to you by:
b_hartmann,
m_plomer
|
From: <m_p...@us...> - 2013-09-01 21:29:50
|
Revision: 75
http://sourceforge.net/p/beeframework/code/75
Author: m_plomer
Date: 2013-09-01 21:29:45 +0000 (Sun, 01 Sep 2013)
Log Message:
-----------
- convenience UserDetails impl based on Doctrine 2
- Doctrine 2 ConnectionAugmenter
Added Paths:
-----------
trunk/framework/Bee/Persistence/Doctrine2/ConnectionAugmenter.php
trunk/framework/Bee/Security/UserDetails/
trunk/framework/Bee/Security/UserDetails/Doctrine2/
trunk/framework/Bee/Security/UserDetails/Doctrine2/SimpleUser.php
trunk/framework/Bee/Security/UserDetails/Doctrine2/SimpleUserDetailsService.php
Added: trunk/framework/Bee/Persistence/Doctrine2/ConnectionAugmenter.php
===================================================================
--- trunk/framework/Bee/Persistence/Doctrine2/ConnectionAugmenter.php (rev 0)
+++ trunk/framework/Bee/Persistence/Doctrine2/ConnectionAugmenter.php 2013-09-01 21:29:45 UTC (rev 75)
@@ -0,0 +1,49 @@
+<?php
+namespace Bee\Persistence\Doctrine2;
+use Doctrine\Common\EventSubscriber;
+use Doctrine\DBAL\Event\ConnectionEventArgs;
+use Doctrine\DBAL\Events;
+
+
+/**
+ * Class ConnectionAugmenter
+ * @package Bee\Persistence\Doctrine2
+ */
+class ConnectionAugmenter implements EventSubscriber {
+
+ /**
+ * @var string
+ */
+ private $postConnectScript;
+
+ /**
+ * @param string $postConnectScript
+ */
+ public function setPostConnectScript($postConnectScript) {
+ $this->postConnectScript = $postConnectScript;
+ }
+
+ /**
+ * @return string
+ */
+ public function getPostConnectScript() {
+ return $this->postConnectScript;
+ }
+
+ /**
+ * Returns an array of events this subscriber wants to listen to.
+ *
+ * @return array
+ */
+ public function getSubscribedEvents() {
+ return array(Events::postConnect);
+ }
+
+ public function postConnect(ConnectionEventArgs $eventArgs) {
+ $eventArgs->getConnection()->beginTransaction();
+ if(\Bee_Utils_Strings::hasText($this->getPostConnectScript())) {
+ $eventArgs->getConnection()->exec($this->getPostConnectScript());
+ }
+ $eventArgs->getConnection()->commit();
+ }
+}
\ No newline at end of file
Added: trunk/framework/Bee/Security/UserDetails/Doctrine2/SimpleUser.php
===================================================================
--- trunk/framework/Bee/Security/UserDetails/Doctrine2/SimpleUser.php (rev 0)
+++ trunk/framework/Bee/Security/UserDetails/Doctrine2/SimpleUser.php 2013-09-01 21:29:45 UTC (rev 75)
@@ -0,0 +1,156 @@
+<?php
+namespace Bee\Security\UserDetails\Doctrine2;
+use Bee_Security_IGrantedAuthority;
+use Bee_Security_IUserDetails;
+
+/**
+ * Base class for user entities - also usable as simple user entity (WIP)
+ * @package Bee\Security\UserDetails\Doctrine2
+ * @Entity
+ * @Table(name="bee_security_user")
+ */
+class SimpleUser implements Bee_Security_IUserDetails {
+
+ /**
+ * @var integer
+ *
+ * @Id
+ * @GeneratedValue
+ * @Column(type="integer")
+ */
+ private $id;
+
+ /**
+ * @var string
+ * @Column(name="username", type="string", length=20, nullable=false)
+ */
+ private $username;
+
+ /**
+ * @var string
+ * @Column(name="password", type="string", length=20, nullable=false)
+ */
+ private $password;
+
+ /**
+ * @var boolean
+ * @Column(name="disabled", type="boolean", nullable=false)
+ */
+ private $disabled = false;
+
+ /**
+ * @var string
+ * @Column(name="name", type="string", length=200, nullable=true)
+ */
+ private $name;
+
+ /**
+ * Get the identifier
+ *
+ * @return integer
+ */
+ public function getId() {
+ return $this->id;
+ }
+
+
+ /**
+ * Returns the authorities granted to the user. Cannot return <code>null</code>.
+ *
+ * @return Bee_Security_IGrantedAuthority[] the authorities, sorted by natural key (never <code>null</code>)
+ */
+ function getAuthorities() {
+ return array();
+ }
+
+ /**
+ * Returns the password used to authenticate the user. Cannot return <code>null</code>.
+ *
+ * @return String the password (never <code>null</code>)
+ */
+ function getPassword() {
+ return $this->password;
+ }
+
+ /**
+ * @param string $password
+ */
+ public function setPassword($password) {
+ $this->password = $password;
+ }
+
+ /**
+ * Returns the username used to authenticate the user. Cannot return <code>null</code>.
+ *
+ * @return String the username (never <code>null</code>)
+ */
+ public function getUsername() {
+ return $this->username;
+ }
+
+ /**
+ * @param string $username
+ */
+ public function setUsername($username) {
+ $this->username = $username;
+ }
+
+ /**
+ * Indicates whether the user's account has expired. An expired account cannot be authenticated.
+ *
+ * @return boolean <code>true</code> if the user's account is valid (ie non-expired), <code>false</code> if no longer valid
+ * (ie expired)
+ */
+ public function isAccountNonExpired() {
+ return true;
+ }
+
+ /**
+ * Indicates whether the user is locked or unlocked. A locked user cannot be authenticated.
+ *
+ * @return boolean <code>true</code> if the user is not locked, <code>false</code> otherwise
+ */
+ public function isAccountNonLocked() {
+ return true;
+ }
+
+ /**
+ * Indicates whether the user's credentials (password) has expired. Expired credentials prevent
+ * authentication.
+ *
+ * @return boolean <code>true</code> if the user's credentials are valid (ie non-expired), <code>false</code> if no longer
+ * valid (ie expired)
+ */
+ public function isCredentialsNonExpired() {
+ return true;
+ }
+
+ /**
+ * Indicates whether the user is enabled or disabled. A disabled user cannot be authenticated.
+ *
+ * @return boolean <code>true</code> if the user is enabled, <code>false</code> otherwise
+ */
+ public function isEnabled() {
+ return !$this->getDisabled();
+ }
+
+ /**
+ * @return boolean
+ */
+ public function getDisabled() {
+ return $this->disabled;
+ }
+
+ /**
+ * @param boolean $disabled
+ */
+ public function setDisabled($disabled) {
+ $this->disabled = $disabled;
+ }
+
+ public function __toString() {
+ return $this->getUsername();
+ }
+}
+
+
Added: trunk/framework/Bee/Security/UserDetails/Doctrine2/SimpleUserDetailsService.php
===================================================================
--- trunk/framework/Bee/Security/UserDetails/Doctrine2/SimpleUserDetailsService.php (rev 0)
+++ trunk/framework/Bee/Security/UserDetails/Doctrine2/SimpleUserDetailsService.php 2013-09-01 21:29:45 UTC (rev 75)
@@ -0,0 +1,72 @@
+<?php
+namespace Bee\Security\UserDetails\Doctrine2;
+use Bee_Security_Exception_UsernameNotFound;
+use Bee_Security_IUserDetails;
+use Bee_Security_IUserDetailsService;
+use Doctrine\ORM\EntityManager;
+use Doctrine\ORM\NoResultException;
+
+/**
+ * Class SimpleUserDetailsService
+ * @package Bee\Security\UserDetails\Doctrine2
+ */
+class SimpleUserDetailsService implements Bee_Security_IUserDetailsService {
+
+ /**
+ * @var EntityManager
+ */
+ private $entityManager;
+
+ /**
+ * @var string
+ */
+ private $userEntityName = 'Bee\Tools\Security\Auth\Doctrine2\SimpleUser';
+
+ /**
+ * Locates the user based on the username. In the actual implementation, the search may possibly be case
+ * insensitive, or case insensitive depending on how the implementaion instance is configured. In this case, the
+ * <code>Bee_Security_IUserDetails</code> object that comes back may have a username that is of a different case
+ * than what was actually requested.
+ *
+ * @param $username
+ * @throws \Bee_Security_Exception_UsernameNotFound
+ * @return Bee_Security_IUserDetails a fully populated user record (never <code>null</code>)
+ */
+ function loadUserByUsername($username) {
+ try {
+ return $this->entityManager
+ ->createQuery('SELECT u FROM ' . $this->getUserEntityName() . ' u WHERE u.username = :username')
+ ->setParameter('username', $username)->getSingleResult();
+ } catch (NoResultException $e) {
+ throw new Bee_Security_Exception_UsernameNotFound('User name ' . $username . ' not found', null, $e);
+ }
+ }
+
+ /**
+ * @param EntityManager $entityManager
+ */
+ public function setEntityManager(EntityManager $entityManager) {
+ $this->entityManager = $entityManager;
+ }
+
+ /**
+ * @return EntityManager
+ */
+ public function getEntityManager() {
+ return $this->entityManager;
+ }
+
+ /**
+ * @param string $userEntityName
+ */
+ public function setUserEntityName($userEntityName) {
+ $this->userEntityName = $userEntityName;
+ }
+
+ /**
+ * @return string
+ */
+ public function getUserEntityName() {
+ return $this->userEntityName;
+ }
+}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|