Exemple #1
0
 public function callback()
 {
     // from querystring?
     $returnto = Ajde::app()->getRequest()->getParam('returnto', '');
     if (empty($returnto)) {
         $returnto = Ajde_Http_Response::REDIRECT_HOMEPAGE;
     }
     // from session?
     $returntoSession = new Ajde_Session('returnto');
     if ($returntoSession->has('url')) {
         $returnto = $returntoSession->get('url');
         $returntoSession->destroy();
     }
     if (!$this->_provider->isAuthenticated()) {
         Ajde_Session_Flash::alert('Permission request cancelled for ' . ucfirst($this->_providername));
         $this->redirect($returnto);
         return false;
     }
     // We already have a user for this SSO, log that user in and redirect
     if ($user = $this->_provider->getUser()) {
         if ($this->getLoggedInUser()) {
             Ajde_Session_Flash::alert(ucfirst($this->_providername) . ' user ' . $this->_provider->getUsernameSuggestion() . ' is already connected to another account.');
             $this->redirect($returnto);
         } else {
             $user->login();
             $user->storeCookie(false);
             $this->redirect($returnto);
         }
     } else {
         // A user is already logged in, link this account and redirect
         if ($user = $this->getLoggedInUser()) {
             $sso = new SsoModel();
             $sso->populate(['user' => $user->getPK(), 'provider' => $this->_providername, 'username' => $this->_provider->getUsernameSuggestion(), 'avatar' => $this->_provider->getAvatarSuggestion(), 'profile' => $this->_provider->getProfileSuggestion(), 'uid' => $this->_provider->getUidHash(), 'data' => serialize($this->_provider->getData())]);
             $sso->insert();
             $user->copyAvatarFromSso($sso);
             $this->redirect($returnto);
             // No match found, redirect to register page
         } else {
             $username = $this->_provider->getUsernameSuggestion();
             $email = $this->_provider->getEmailSuggestion();
             $fullname = $this->_provider->getNameSuggestion();
             $this->redirect('user/register?provider=' . $this->_providername . '&username='******'&email=' . esc($email) . '&fullname=' . esc($fullname) . '&hidepassword=1&returnto=' . $returnto);
         }
     }
 }
Exemple #2
0
 private function submission($crudId, $id)
 {
     $session = new Ajde_Session('AC.Crud');
     /* @var $crud Ajde_Crud */
     $crud = $session->getModel($crudId);
     // verify that we have a valid crud model
     if (!$crud) {
         return ['success' => false];
     }
     /* @var $model FormModel */
     $model = $crud->getModel();
     $model->setOptions($crud->getOptions('model'));
     // Get POST params
     $post = Ajde_Http_Request::globalPost();
     $id = issetor($post['id']);
     // verify that we have a valid form model
     if (!$id) {
         return ['success' => false];
     }
     // load form
     $model->loadByPK($id);
     $model->populate($post);
     // validate form
     Ajde_Event::trigger($model, 'beforeCrudSave', [$crud]);
     if (!$model->validate($crud->getOptions('fields'))) {
         return ['operation' => 'save', 'success' => false, 'errors' => $model->getValidationErrors()];
     }
     // prepare submission
     $values = [];
     foreach ($post as $key => $value) {
         if (substr($key, 0, 5) === 'meta_') {
             $metaId = str_replace('meta_', '', $key);
             $metaName = MetaModel::getNameFromId($metaId);
             $values[$metaName] = $value;
         }
     }
     $entryText = '';
     foreach ($values as $k => $v) {
         $entryText .= $k . ': ' . $v . PHP_EOL;
     }
     $submission = new SubmissionModel();
     $submission->form = $id;
     $submission->ip = $_SERVER['REMOTE_ADDR'];
     $submission->user = Ajde_User::getLoggedIn();
     $submission->entry = json_encode($values);
     $submission->entry_text = $entryText;
     $success = $submission->insert();
     if ($success === true) {
         // Destroy reference to crud instance
         $session->destroy($crudId);
         // set message for next page
         Ajde_Session_Flash::alert(trans('Form submitted successfully'));
         $mailer = new Ajde_Mailer();
         // send email to administrator
         $body = 'Form: ' . $model->displayField() . '<br/><br/>' . nl2br($entryText);
         $mailer->SendQuickMail(config('app.email'), config('app.email'), config('app.title'), 'New form submission', $body);
         // send email to user
         $email = $model->getEmail();
         /* @var $email EmailModel */
         $email_to = $model->getEmailTo();
         /* @var $email MetaModel */
         $email_address = issetor($post['meta_' . $email_to->getPK()]);
         if ($email->hasLoaded() && $email_to->hasLoaded() && $email_address) {
             $mailer->sendUsingModel($email->getIdentifier(), $email_address, $email_address, ['entry' => nl2br($entryText)]);
         }
     }
     return ['operation' => 'save', 'id' => $model->getPK(), 'displayField' => $model->get($model->getDisplayField()), 'success' => $success];
 }
 public function startNew()
 {
     $session = new Ajde_Session('AC.Shop');
     $session->destroy();
     return $this->redirect('shop/cart');
 }
 public function save($crudId, $id)
 {
     $session = new Ajde_Session('AC.Crud');
     /* @var $crud Ajde_Crud */
     $crud = $session->getModel($crudId);
     /* @var $model Ajde_Model */
     $model = $crud->getModel();
     $model->setOptions($crud->getOptions('model'));
     // Get POST params
     $post = $_POST;
     foreach ($post as $key => $value) {
         // Include empty values, so we can set them to null if the table structure allows us
         //			if (empty($value)) {
         //				unset($post[$key]);
         //			}
     }
     $id = issetor($post["id"]);
     $operation = empty($id) ? 'insert' : 'save';
     if ($operation === 'save') {
         $model->loadByPK($id);
     }
     $model->populate($post);
     if (!$model->validate($crud->getOptions('fields'))) {
         return array('operation' => $operation, 'success' => false, 'errors' => $model->getValidationErrors());
     }
     $success = $model->{$operation}();
     if ($success === true) {
         // Destroy reference to crud instance
         $session->destroy($crudId);
         // Set flash alert
         Ajde_Session_Flash::alert('Record ' . ($operation == 'insert' ? 'added' : 'saved'));
     }
     return array('operation' => $operation, 'id' => $model->getPK(), 'success' => $success);
 }
Exemple #5
0
 public function logout()
 {
     // First destroy current session
     session_regenerate_id();
     $session = new Ajde_Session('user');
     $session->destroy();
     $cookie = new Ajde_Cookie(Config::get('ident') . '_user');
     $cookie->destroy();
 }
Exemple #6
0
 public function logout()
 {
     // First destroy current session
     // TODO: overhead to call session_regenerate_id? is it not required??
     //session_regenerate_id();
     $session = new Ajde_Session('user');
     $session->destroy();
     $cookie = new Ajde_Cookie(config('app.id') . '_user');
     $cookie->destroy();
     self::$_user = null;
 }