Exemplo n.º 1
0
 public function copyAvatarFromSso(SsoModel $sso)
 {
     if ($sso->hasNotEmpty('avatar')) {
         $this->set('avatar', $sso->get('avatar'));
         $this->save();
     }
 }
Exemplo n.º 2
0
Arquivo: Sso.php Projeto: nabble/ajde
 public function getUser()
 {
     $hash = $this->getUidHash();
     $model = new SsoModel();
     if ($hash && $model->loadByField('uid', $hash)) {
         $model->loadParent('user');
         return $model->getUser();
     } else {
         return false;
     }
 }
Exemplo n.º 3
0
 public function disconnect()
 {
     $returnto = Ajde::app()->getRequest()->getParam('returnto', '');
     if ($user = $this->getLoggedInUser()) {
         // should always be true, since we are inside a Ajde_User_Controller
         $sso = new SsoModel();
         if ($sso->loadByFields(['user' => $user->getPK(), 'provider' => $this->_providername])) {
             $this->_provider->destroySession();
             $sso->delete();
             Ajde_Session_Flash::alert('Disconnected from ' . ucfirst($this->_providername));
             $this->redirect($returnto);
         } else {
             Ajde_Session_Flash::alert('Could not disconnect from ' . ucfirst($this->_providername));
             $this->redirect($returnto);
         }
     }
 }
Exemplo n.º 4
0
 public static function fromModel(SsoModel $sso)
 {
     $instance = new self(unserialize($sso->getData()));
     return $instance;
 }
Exemplo n.º 5
0
 public function registerJson()
 {
     $user = new UserModel();
     $returnto = Ajde::app()->getRequest()->getPostParam('returnto', false);
     $username = Ajde::app()->getRequest()->getPostParam($user->usernameField);
     $password = Ajde::app()->getRequest()->getPostParam('password', '');
     $passwordCheck = Ajde::app()->getRequest()->getPostParam('passwordCheck', '');
     $providername = Ajde::app()->getRequest()->getPostParam('provider', false);
     $email = Ajde::app()->getRequest()->getPostParam('email', false);
     $fullname = Ajde::app()->getRequest()->getPostParam('fullname', false);
     $return = [false];
     $shadowUser = new UserModel();
     $provider = false;
     if ($providername) {
         $sso = config('user.sso.providers');
         if (!in_array($providername, $sso)) {
             Ajde_Http_Response::redirectNotFound();
         }
         $classname = 'Ajde_User_Sso_' . ucfirst($providername);
         /* @var $provider Ajde_User_SSO_Interface */
         $provider = new $classname();
     }
     if (empty($username)) {
         $return = ['success' => false, 'message' => trans('Please provide a ' . $user->usernameField . '')];
     } else {
         if (!$provider && empty($password)) {
             $return = ['success' => false, 'message' => trans('Please provide a password')];
         } else {
             if ($shadowUser->loadByField($shadowUser->usernameField, $username)) {
                 $return = ['success' => false, 'message' => trans(ucfirst($user->usernameField) . ' already exist')];
             } else {
                 if (!$provider && $password !== $passwordCheck) {
                     $return = ['success' => false, 'message' => trans('Passwords do not match')];
                 } else {
                     if (empty($email)) {
                         $return = ['success' => false, 'message' => trans('Please provide an e-mail address')];
                     } else {
                         if (Ajde_Component_String::validEmail($email) === false) {
                             $return = ['success' => false, 'message' => trans('Please provide a valid e-mail address')];
                         } else {
                             if ($shadowUser->loadByField('email', $email)) {
                                 $return = ['success' => false, 'message' => trans('A user with this e-mail address already exist')];
                             } else {
                                 if (empty($fullname)) {
                                     $return = ['success' => false, 'message' => trans('Please provide a full name')];
                                 } else {
                                     if ($provider && !$provider->getData()) {
                                         $return = ['success' => false, 'message' => trans('Something went wrong with fetching your credentials from an external service')];
                                     } else {
                                         $user->set('email', $email);
                                         $user->set('fullname', $fullname);
                                         if ($user->add($username, $password)) {
                                             if ($provider) {
                                                 $sso = new SsoModel();
                                                 $sso->populate(['user' => $user->getPK(), 'provider' => $providername, 'username' => $provider->getUsernameSuggestion(), 'avatar' => $provider->getAvatarSuggestion(), 'profile' => $provider->getProfileSuggestion(), 'uid' => $provider->getUidHash(), 'data' => serialize($provider->getData())]);
                                                 $sso->insert();
                                                 $user->copyAvatarFromSso($sso);
                                             }
                                             $user->login();
                                             $user->storeCookie($this->includeDomain);
                                             Ajde_Session_Flash::alert(sprintf(trans('Welcome %s, you are now logged in'), $fullname));
                                             $return = ['success' => true, 'returnto' => $returnto];
                                         } else {
                                             $return = ['success' => false, 'message' => trans('Something went wrong')];
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     return $return;
 }