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); } } }
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); }
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(); }
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; }