@@ -30,6 +30,10 @@ |
||
| 30 | 30 | } |
| 31 | 31 | } |
| 32 | 32 | |
| 33 | + /** |
|
| 34 | + * @param string $login |
|
| 35 | + * @param string $password |
|
| 36 | + */ |
|
| 33 | 37 | protected static function _loginUser( $login, $password, $authenticationMatch = false ) |
| 34 | 38 | { |
| 35 | 39 | $fwName = eZINI::instance('identitymanagement.ini')->variable('GeneralSettings', 'FirewallName'); |
@@ -14,23 +14,23 @@ discard block |
||
| 14 | 14 | * @param bool $authenticationMatch |
| 15 | 15 | * @return bool|mixed |
| 16 | 16 | */ |
| 17 | - static function loginUser( $login, $password, $authenticationMatch = false ) |
|
| 17 | + static function loginUser($login, $password, $authenticationMatch = false) |
|
| 18 | 18 | { |
| 19 | - $user = self::_loginUser( $login, $password, $authenticationMatch ); |
|
| 19 | + $user = self::_loginUser($login, $password, $authenticationMatch); |
|
| 20 | 20 | |
| 21 | - if ( is_object( $user ) ) |
|
| 21 | + if (is_object($user)) |
|
| 22 | 22 | { |
| 23 | - self::loginSucceeded( $user ); |
|
| 23 | + self::loginSucceeded($user); |
|
| 24 | 24 | return $user; |
| 25 | 25 | } |
| 26 | 26 | else |
| 27 | 27 | { |
| 28 | - self::loginFailed( $user, $login ); |
|
| 28 | + self::loginFailed($user, $login); |
|
| 29 | 29 | return false; |
| 30 | 30 | } |
| 31 | 31 | } |
| 32 | 32 | |
| 33 | - protected static function _loginUser( $login, $password, $authenticationMatch = false ) |
|
| 33 | + protected static function _loginUser($login, $password, $authenticationMatch = false) |
|
| 34 | 34 | { |
| 35 | 35 | $fwName = eZINI::instance('identitymanagement.ini')->variable('GeneralSettings', 'FirewallName'); |
| 36 | 36 | |
@@ -60,10 +60,10 @@ discard block |
||
| 60 | 60 | |
| 61 | 61 | return self::fetch($user->id); |
| 62 | 62 | |
| 63 | - } catch(\Exception $e) { |
|
| 63 | + } catch (\Exception $e) { |
|
| 64 | 64 | /// @todo make it easier to tell apart system error from user errors such as bad password... |
| 65 | 65 | |
| 66 | - eZDebug::writeError($e->getMessage(), __METHOD__ ); |
|
| 66 | + eZDebug::writeError($e->getMessage(), __METHOD__); |
|
| 67 | 67 | |
| 68 | 68 | return false; |
| 69 | 69 | } |
@@ -22,8 +22,7 @@ |
||
| 22 | 22 | { |
| 23 | 23 | self::loginSucceeded( $user ); |
| 24 | 24 | return $user; |
| 25 | - } |
|
| 26 | - else |
|
| 25 | + } else |
|
| 27 | 26 | { |
| 28 | 27 | self::loginFailed( $user, $login ); |
| 29 | 28 | return false; |
@@ -3,15 +3,12 @@ |
||
| 3 | 3 | namespace Kaliop\IdentityManagementBundle\Security\User\Provider; |
| 4 | 4 | |
| 5 | 5 | use Symfony\Component\Security\Core\User\UserProviderInterface; |
| 6 | -use Symfony\Component\Security\Core\Exception\UsernameNotFoundException; |
|
| 7 | 6 | use Symfony\Component\Security\Core\Exception\UnsupportedUserException; |
| 8 | 7 | use Symfony\Component\Security\Core\User\UserInterface; |
| 9 | -use Kaliop\IdentityManagementBundle\Security\User\AMSUser as UserClass; |
|
| 10 | 8 | use Kaliop\IdentityManagementBundle\Security\User\RemoteUserProviderInterface; |
| 11 | 9 | use Kaliop\IdentityManagementBundle\Security\User\RemoteUser as KaliopRemoteUser; |
| 12 | 10 | use Kaliop\IdentityManagementBundle\Security\User\RemoteUserHandlerInterface; |
| 13 | 11 | use eZ\Publish\Core\MVC\Symfony\Security\User\APIUserProviderInterface; |
| 14 | -use eZ\Publish\Core\MVC\Symfony\Security\User as eZMVCUser; |
|
| 15 | 12 | use Psr\Log\LoggerInterface; |
| 16 | 13 | |
| 17 | 14 | class RemoteUser implements UserProviderInterface, RemoteUserProviderInterface |
@@ -108,7 +108,7 @@ |
||
| 108 | 108 | } |
| 109 | 109 | |
| 110 | 110 | } catch (\Exception $e) { |
| 111 | - if ($this->logger) $this->logger->error("Unexpected error while finding/creating/updating repo user from data gotten from remote service: " . $e->getMessage()); |
|
| 111 | + if ($this->logger) $this->logger->error("Unexpected error while finding/creating/updating repo user from data gotten from remote service: ".$e->getMessage()); |
|
| 112 | 112 | throw $e; |
| 113 | 113 | } |
| 114 | 114 | |
@@ -108,7 +108,9 @@ |
||
| 108 | 108 | } |
| 109 | 109 | |
| 110 | 110 | } catch (\Exception $e) { |
| 111 | - if ($this->logger) $this->logger->error("Unexpected error while finding/creating/updating repo user from data gotten from remote service: " . $e->getMessage()); |
|
| 111 | + if ($this->logger) { |
|
| 112 | + $this->logger->error("Unexpected error while finding/creating/updating repo user from data gotten from remote service: " . $e->getMessage()); |
|
| 113 | + } |
|
| 112 | 114 | throw $e; |
| 113 | 115 | } |
| 114 | 116 | |
@@ -4,8 +4,6 @@ |
||
| 4 | 4 | |
| 5 | 5 | use Kaliop\IdentityManagementBundle\Adapter\ClientInterface; |
| 6 | 6 | use eZ\Publish\API\Repository\Repository; |
| 7 | -use eZ\Publish\API\Repository\Values\Content\Query; |
|
| 8 | -use eZ\Publish\API\Repository\Values\Content\Query\Criterion; |
|
| 9 | 7 | use eZ\Publish\API\Repository\Values\User\User; |
| 10 | 8 | use eZ\Publish\API\Repository\Exceptions\NotFoundException; |
| 11 | 9 | |
@@ -134,7 +134,7 @@ discard block |
||
| 134 | 134 | $newUserGroups = $this->getGroupsFromProfile($profile); |
| 135 | 135 | $currentUserGroups = $userService->loadUserGroupsOfUser($eZUser); |
| 136 | 136 | $groupsToRemove = array(); |
| 137 | - foreach($currentUserGroups as $currentUserGroup) { |
|
| 137 | + foreach ($currentUserGroups as $currentUserGroup) { |
|
| 138 | 138 | if (!array_key_exists($currentUserGroup->id, $newUserGroups)) { |
| 139 | 139 | $groupsToRemove[] = $currentUserGroup; |
| 140 | 140 | } else { |
@@ -164,7 +164,7 @@ discard block |
||
| 164 | 164 | |
| 165 | 165 | protected function getRemoteIdFromProfile($profile) |
| 166 | 166 | { |
| 167 | - return $this->remoteIdPrefix . $this->profileHash($profile); |
|
| 167 | + return $this->remoteIdPrefix.$this->profileHash($profile); |
|
| 168 | 168 | } |
| 169 | 169 | |
| 170 | 170 | /** |
@@ -211,7 +211,7 @@ discard block |
||
| 211 | 211 | * @param string $prefix |
| 212 | 212 | * @return string |
| 213 | 213 | */ |
| 214 | - protected function createTempFile($data, $prefix='') |
|
| 214 | + protected function createTempFile($data, $prefix = '') |
|
| 215 | 215 | { |
| 216 | 216 | $imageFileName = trim(tempnam(sys_get_temp_dir(), $prefix), '.'); |
| 217 | 217 | file_put_contents($imageFileName, $data); |
@@ -226,7 +226,7 @@ discard block |
||
| 226 | 226 | protected function cleanUpAfterUserCreation() |
| 227 | 227 | { |
| 228 | 228 | foreach ($this->tempFiles as $fileName) { |
| 229 | - if (is_file( $fileName)) |
|
| 229 | + if (is_file($fileName)) |
|
| 230 | 230 | unlink($fileName); |
| 231 | 231 | } |
| 232 | 232 | } |
@@ -237,7 +237,7 @@ discard block |
||
| 237 | 237 | protected function cleanUpAfterUserUpdate() |
| 238 | 238 | { |
| 239 | 239 | foreach ($this->tempFiles as $fileName) { |
| 240 | - if (is_file( $fileName)) |
|
| 240 | + if (is_file($fileName)) |
|
| 241 | 241 | unlink($fileName); |
| 242 | 242 | } |
| 243 | 243 | } |
@@ -52,8 +52,7 @@ discard block |
||
| 52 | 52 | try |
| 53 | 53 | { |
| 54 | 54 | return $this->repository->getUserService()->loadUserByLogin($remoteUser->getUsername()); |
| 55 | - } |
|
| 56 | - catch (NotFoundException $e) |
|
| 55 | + } catch (NotFoundException $e) |
|
| 57 | 56 | { |
| 58 | 57 | return false; |
| 59 | 58 | } |
@@ -226,8 +225,9 @@ discard block |
||
| 226 | 225 | protected function cleanUpAfterUserCreation() |
| 227 | 226 | { |
| 228 | 227 | foreach ($this->tempFiles as $fileName) { |
| 229 | - if (is_file( $fileName)) |
|
| 230 | - unlink($fileName); |
|
| 228 | + if (is_file( $fileName)) { |
|
| 229 | + unlink($fileName); |
|
| 230 | + } |
|
| 231 | 231 | } |
| 232 | 232 | } |
| 233 | 233 | |
@@ -237,8 +237,9 @@ discard block |
||
| 237 | 237 | protected function cleanUpAfterUserUpdate() |
| 238 | 238 | { |
| 239 | 239 | foreach ($this->tempFiles as $fileName) { |
| 240 | - if (is_file( $fileName)) |
|
| 241 | - unlink($fileName); |
|
| 240 | + if (is_file( $fileName)) { |
|
| 241 | + unlink($fileName); |
|
| 242 | + } |
|
| 242 | 243 | } |
| 243 | 244 | } |
| 244 | 245 | } |
@@ -24,10 +24,10 @@ |
||
| 24 | 24 | { |
| 25 | 25 | $loader = new YamlFileLoader( |
| 26 | 26 | $container, |
| 27 | - new FileLocator( __DIR__ . '/../Resources/config' ) |
|
| 27 | + new FileLocator(__DIR__.'/../Resources/config') |
|
| 28 | 28 | ); |
| 29 | 29 | |
| 30 | 30 | // New services |
| 31 | - $loader->load( 'services.yml' ); |
|
| 31 | + $loader->load('services.yml'); |
|
| 32 | 32 | } |
| 33 | 33 | } |
@@ -23,7 +23,7 @@ discard block |
||
| 23 | 23 | * Note that the list of attributes gotten from ladp is decided by settings for the client class... |
| 24 | 24 | * @todo store the password salted and encrypted in memory instead of plaintext |
| 25 | 25 | */ |
| 26 | - public function __construct($authUserResult, $emailField, $login, $password='') |
|
| 26 | + public function __construct($authUserResult, $emailField, $login, $password = '') |
|
| 27 | 27 | { |
| 28 | 28 | $this->username = $login; |
| 29 | 29 | $this->password = $password; |
@@ -71,7 +71,7 @@ discard block |
||
| 71 | 71 | */ |
| 72 | 72 | protected function ldap2array($data) { |
| 73 | 73 | //return $data; |
| 74 | - foreach($data as $key => $value) { |
|
| 74 | + foreach ($data as $key => $value) { |
|
| 75 | 75 | if ($key === 'dn') { |
| 76 | 76 | continue; |
| 77 | 77 | } |
@@ -91,14 +91,14 @@ |
||
| 91 | 91 | } |
| 92 | 92 | |
| 93 | 93 | if ($search['count'] > 1) { |
| 94 | - if ($this->logger) $this->logger->warning('More than one ldap account found for ' . $username); |
|
| 94 | + if ($this->logger) $this->logger->warning('More than one ldap account found for '.$username); |
|
| 95 | 95 | |
| 96 | 96 | throw new AuthenticationServiceException('More than one user found'); |
| 97 | 97 | } |
| 98 | 98 | |
| 99 | 99 | // always carry out this check, as the data is needed to log in |
| 100 | 100 | if (!isset($this->settings['ldap_login_attribute']) || !isset($search[0][$this->settings['ldap_login_attribute']][0])) { |
| 101 | - if ($this->logger) $this->logger->info("Authentication failed for user: '$username', missing attribute used to log in to ldap: " . @$this->settings['ldap_login_attribute']); |
|
| 101 | + if ($this->logger) $this->logger->info("Authentication failed for user: '$username', missing attribute used to log in to ldap: ".@$this->settings['ldap_login_attribute']); |
|
| 102 | 102 | |
| 103 | 103 | throw new AuthenticationServiceException('Invalid user profile: missing ldap attribute needed for log-in'); |
| 104 | 104 | } |
@@ -48,7 +48,9 @@ discard block |
||
| 48 | 48 | */ |
| 49 | 49 | public function authenticateUser($username, $password) |
| 50 | 50 | { |
| 51 | - if ($this->logger) $this->logger->info("Looking up remote user: '$username'"); |
|
| 51 | + if ($this->logger) { |
|
| 52 | + $this->logger->info("Looking up remote user: '$username'"); |
|
| 53 | + } |
|
| 52 | 54 | |
| 53 | 55 | $ldaps = is_array($this->ldap) ? array_values($this->ldap) : array($this->ldap); |
| 54 | 56 | $i = 0; |
@@ -69,36 +71,48 @@ discard block |
||
| 69 | 71 | } |
| 70 | 72 | |
| 71 | 73 | } catch (ConnectionException $e) { |
| 72 | - if ($this->logger) $this->logger->error(sprintf('Connection error "%s"', $e->getMessage())); |
|
| 74 | + if ($this->logger) { |
|
| 75 | + $this->logger->error(sprintf('Connection error "%s"', $e->getMessage())); |
|
| 76 | + } |
|
| 73 | 77 | |
| 74 | 78 | if ($i < count($ldaps)) { |
| 75 | - if ($this->logger) $this->logger->error("Connecting to ldap server $i"); |
|
| 79 | + if ($this->logger) { |
|
| 80 | + $this->logger->error("Connecting to ldap server $i"); |
|
| 81 | + } |
|
| 76 | 82 | continue; |
| 77 | 83 | } |
| 78 | 84 | |
| 79 | 85 | /// @todo shall we log an error ? |
| 80 | 86 | throw new AuthenticationServiceException(sprintf('Connection error "%s"', $e->getMessage()), 0, $e); |
| 81 | 87 | } catch (\Exception $e) { |
| 82 | - if ($this->logger) $this->logger->error(sprintf('Unexpected error "%s"', $e->getMessage())); |
|
| 88 | + if ($this->logger) { |
|
| 89 | + $this->logger->error(sprintf('Unexpected error "%s"', $e->getMessage())); |
|
| 90 | + } |
|
| 83 | 91 | |
| 84 | 92 | throw new AuthenticationServiceException(sprintf('Internal error "%s"', $e->getMessage()), 0, $e); |
| 85 | 93 | } |
| 86 | 94 | |
| 87 | 95 | if (!$search) { |
| 88 | - if ($this->logger) $this->logger->info("User not found"); |
|
| 96 | + if ($this->logger) { |
|
| 97 | + $this->logger->info("User not found"); |
|
| 98 | + } |
|
| 89 | 99 | |
| 90 | 100 | throw new BadCredentialsException(sprintf('User "%s" not found.', $username)); |
| 91 | 101 | } |
| 92 | 102 | |
| 93 | 103 | if ($search['count'] > 1) { |
| 94 | - if ($this->logger) $this->logger->warning('More than one ldap account found for ' . $username); |
|
| 104 | + if ($this->logger) { |
|
| 105 | + $this->logger->warning('More than one ldap account found for ' . $username); |
|
| 106 | + } |
|
| 95 | 107 | |
| 96 | 108 | throw new AuthenticationServiceException('More than one user found'); |
| 97 | 109 | } |
| 98 | 110 | |
| 99 | 111 | // always carry out this check, as the data is needed to log in |
| 100 | 112 | if (!isset($this->settings['ldap_login_attribute']) || !isset($search[0][$this->settings['ldap_login_attribute']][0])) { |
| 101 | - if ($this->logger) $this->logger->info("Authentication failed for user: '$username', missing attribute used to log in to ldap: " . @$this->settings['ldap_login_attribute']); |
|
| 113 | + if ($this->logger) { |
|
| 114 | + $this->logger->info("Authentication failed for user: '$username', missing attribute used to log in to ldap: " . @$this->settings['ldap_login_attribute']); |
|
| 115 | + } |
|
| 102 | 116 | |
| 103 | 117 | throw new AuthenticationServiceException('Invalid user profile: missing ldap attribute needed for log-in'); |
| 104 | 118 | } |
@@ -106,29 +120,41 @@ discard block |
||
| 106 | 120 | try { |
| 107 | 121 | $this->validateLdapResults($search[0]); |
| 108 | 122 | } catch (\Exception $e) { |
| 109 | - if ($this->logger) $this->logger->warning("Invalid user profile for user: '$username': ".$e->getMessage()); |
|
| 123 | + if ($this->logger) { |
|
| 124 | + $this->logger->warning("Invalid user profile for user: '$username': ".$e->getMessage()); |
|
| 125 | + } |
|
| 110 | 126 | |
| 111 | 127 | throw new AuthenticationServiceException('Invalid user profile: '.$e->getMessage()); |
| 112 | 128 | } |
| 113 | 129 | |
| 114 | - if ($this->logger) $this->logger->info("Remote user found, attempting authentication for user: '$username'"); |
|
| 130 | + if ($this->logger) { |
|
| 131 | + $this->logger->info("Remote user found, attempting authentication for user: '$username'"); |
|
| 132 | + } |
|
| 115 | 133 | |
| 116 | 134 | try { |
| 117 | 135 | $ldap->bind($search[0][$this->settings['ldap_login_attribute']][0], $password); |
| 118 | 136 | } catch (ConnectionException $e) { |
| 119 | - if ($this->logger) $this->logger->info("Authentication failed for user: '$username', bind failed: ".$e->getMessage()); |
|
| 137 | + if ($this->logger) { |
|
| 138 | + $this->logger->info("Authentication failed for user: '$username', bind failed: ".$e->getMessage()); |
|
| 139 | + } |
|
| 120 | 140 | throw new BadCredentialsException('The presented password is invalid.'); |
| 121 | 141 | } catch (\Exception $e) { |
| 122 | - if ($this->logger) $this->logger->info("Authentication failed for user: '$username', unexpected ldap error: ".$e->getMessage()); |
|
| 142 | + if ($this->logger) { |
|
| 143 | + $this->logger->info("Authentication failed for user: '$username', unexpected ldap error: ".$e->getMessage()); |
|
| 144 | + } |
|
| 123 | 145 | throw new AuthenticationServiceException('Unexpected exception: '.$e->getMessage()); |
| 124 | 146 | } |
| 125 | 147 | |
| 126 | - if ($this->logger) $this->logger->info("Authentication succeeded for user: '$username'"); |
|
| 148 | + if ($this->logger) { |
|
| 149 | + $this->logger->info("Authentication succeeded for user: '$username'"); |
|
| 150 | + } |
|
| 127 | 151 | |
| 128 | 152 | // allow ldap to give us back the actual login field to be used in eZ. It might be different because of dashes, spaces, case... |
| 129 | 153 | if (isset($this->settings['login_attribute']) && isset($search[0][$this->settings['login_attribute']][0])) { |
| 130 | 154 | if ($username != $search[0][$this->settings['login_attribute']][0]) { |
| 131 | - if ($this->logger) $this->logger->info("Renamed user '$username' to '{$search[0][$this->settings['login_attribute']][0]}'"); |
|
| 155 | + if ($this->logger) { |
|
| 156 | + $this->logger->info("Renamed user '$username' to '{$search[0][$this->settings['login_attribute']][0]}'"); |
|
| 157 | + } |
|
| 132 | 158 | |
| 133 | 159 | $username = $search[0][$this->settings['login_attribute']][0]; |
| 134 | 160 | } |
@@ -9,13 +9,13 @@ |
||
| 9 | 9 | protected $securityToken = null; |
| 10 | 10 | |
| 11 | 11 | protected function isAuthenticated() { |
| 12 | - if( $this->securityToken == null ) { |
|
| 13 | - $securityToken = $this->container->get( 'security.token_storage' )->getToken(); |
|
| 14 | - if( $securityToken instanceof TokenInterface ) { |
|
| 12 | + if ($this->securityToken == null) { |
|
| 13 | + $securityToken = $this->container->get('security.token_storage')->getToken(); |
|
| 14 | + if ($securityToken instanceof TokenInterface) { |
|
| 15 | 15 | $this->securityToken = $securityToken; |
| 16 | 16 | } |
| 17 | 17 | } |
| 18 | 18 | |
| 19 | - return $this->securityToken->isAuthenticated() === true && count( $this->securityToken->getRoles() ); |
|
| 19 | + return $this->securityToken->isAuthenticated() === true && count($this->securityToken->getRoles()); |
|
| 20 | 20 | } |
| 21 | 21 | } |
@@ -156,10 +156,10 @@ |
||
| 156 | 156 | //$user = $this->userProvider->loadUserByUsername($username); |
| 157 | 157 | return $user; |
| 158 | 158 | |
| 159 | - } catch(AuthenticationException $e) { |
|
| 159 | + } catch (AuthenticationException $e) { |
|
| 160 | 160 | // let through any exception of the expected authentication type |
| 161 | 161 | throw $e; |
| 162 | - } catch(\Exception $e) { |
|
| 162 | + } catch (\Exception $e) { |
|
| 163 | 163 | // we mask any internal, unexpected error from the Client |
| 164 | 164 | /// @todo we should log a message here: the Client used an unexpected exception type... |
| 165 | 165 | /// @tood we should really be using an AuthenticationServiceException here |
@@ -1,5 +1,1 @@ |
||
| 1 | -<?php /* |
|
| 2 | - |
|
| 3 | -[UserSettings] |
|
| 4 | -ExtensionDirectory[]=identitymanagementextension |
|
| 5 | -LoginHandler[]=RemoteUserLogin |
|
| 6 | 1 | \ No newline at end of file |
| 2 | +<?php |
|
| 7 | 3 | \ No newline at end of file |
@@ -1,5 +1,1 @@ |
||
| 1 | -<?php /* |
|
| 2 | - |
|
| 3 | -[UserSettings] |
|
| 4 | -ExtensionDirectory[]=identitymanagementextension |
|
| 5 | -LoginHandler[]=RemoteUserLogin |
|
| 6 | 1 | \ No newline at end of file |
| 2 | +<?php |
|
| 7 | 3 | \ No newline at end of file |
@@ -1,5 +1,1 @@ |
||
| 1 | -<?php /* |
|
| 2 | - |
|
| 3 | -[UserSettings] |
|
| 4 | -ExtensionDirectory[]=identitymanagementextension |
|
| 5 | -LoginHandler[]=RemoteUserLogin |
|
| 6 | 1 | \ No newline at end of file |
| 2 | +<?php |
|
| 7 | 3 | \ No newline at end of file |
@@ -1,5 +1,1 @@ |
||
| 1 | -<?php /* |
|
| 2 | - |
|
| 3 | -[UserSettings] |
|
| 4 | -ExtensionDirectory[]=identitymanagementextension |
|
| 5 | -LoginHandler[]=RemoteUserLogin |
|
| 6 | 1 | \ No newline at end of file |
| 2 | +<?php |
|
| 7 | 3 | \ No newline at end of file |
@@ -1,5 +1,1 @@ |
||
| 1 | -<?php /* |
|
| 2 | - |
|
| 3 | -[UserSettings] |
|
| 4 | -ExtensionDirectory[]=identitymanagementextension |
|
| 5 | -LoginHandler[]=RemoteUserLogin |
|
| 6 | 1 | \ No newline at end of file |
| 2 | +<?php |
|
| 7 | 3 | \ No newline at end of file |