Example #1
0
 function index()
 {
     // GC old sessions
     if ($this->method !== 'delete') {
         $gc = new Application();
         $gc->where('role', 'god')->where('created_on <', strtotime('-14 days'))->get();
         $gc->delete_all();
     }
     if ($this->method == 'get') {
         $auth = $this->authenticate();
         if ($auth) {
             $user_id = $auth[0];
             $u = new User();
             $u->get_by_id($user_id);
             if ($u->exists()) {
                 $this->set_response_data(array('token' => $auth[1], 'user' => $u->to_array()));
             } else {
                 $this->error('404', 'User not found.');
                 return;
             }
         } else {
             $this->error('404', 'Session not found.');
             return;
         }
     } else {
         switch ($this->method) {
             case 'post':
                 $u = new User();
                 if ($this->input->post('email') && $this->input->post('password')) {
                     $u->where('email', $this->input->post('email'))->limit(1)->get();
                     if ($u->exists() && $u->check_password($this->input->post('password'))) {
                         $u->create_session($this->session, $this->input->post('remember') === 'on');
                     } else {
                         $this->error('404', 'User not found.');
                         return;
                     }
                 } else {
                     $this->error('403', 'Required parameters "email" and/or "password" are not present.');
                     return;
                 }
                 $this->redirect("/sessions");
                 break;
             case 'delete':
                 $auth = $this->authenticate();
                 if (!$auth) {
                     $this->error('401', 'Not authorized to perform this action.');
                     return;
                 }
                 $a = new Application();
                 $a->where('token', $auth[1])->get();
                 $a->delete();
                 $user_id = $auth[0];
                 $u = new User();
                 $u->get_by_id($user_id);
                 $u->remember_me = null;
                 $u->save();
                 $this->load->helper('cookie');
                 delete_cookie('remember_me');
                 $this->session->sess_destroy();
                 exit;
                 break;
         }
     }
 }
Example #2
0
 function login()
 {
     $name = $_POST['name'];
     $password = $_POST['password'];
     $re = array();
     $u = new User();
     if ($u->login($name, $password)) {
         $re['model'] = $u->to_array();
         $re['success'] = TRUE;
         $this->session->set_userdata(array('type' => $u->uType, 'id' => $u->id));
         setcookie($u->uType, 1, time() + 3600, '/');
         echo json_encode($re);
     } else {
         echo json_encode(array('error' => '用户名或密码错误'));
     }
 }
Example #3
0
 /**
  * Get User Info
  * Will return an array of user info.
  * 
  * @param mixed $user_id
  */
 public function get_user_info($user_id = 0)
 {
     if ($user_id == 0) {
         $user_id = $this->user_id;
     }
     $u = new User($user_id);
     foreach ($u->role->get()->all as $role) {
         $user['roles'][$role->id] = $role->name;
     }
     foreach ($u->group->get()->all as $group) {
         $user['groups'][$group->id] = $group->name;
     }
     $user['user'] = $u->to_array();
     // We don't want the user meta ID
     unset($user['user']['umeta_id']);
     $user['meta'] = $this->get_user_meta($user_id);
     return count($user) > 0 ? $user : FALSE;
 }
Example #4
0
 /**
  * @param $url
  * @param $theme
  * @param $namespace
  */
 public function __construct($url, $theme = 'default', $namespace = '')
 {
     // Authentication
     /** @var Auth auth */
     $this->auth = NCService::load('User.Auth');
     /** @var \User user */
     $this->user = $this->auth->identify(Env::$request->cookies->get('sess'));
     // Settings
     /** @var Settings settings */
     $this->settings = NCService::load('Application.Settings');
     // Analytics module
     if ($this->analytics) {
         $counter = NCService::load('Application.Analytics', [$this->user ? $this->user->id : null]);
         $counter->save();
     }
     // Renderring
     /** @var Theme view */
     $this->view = NCModuleCore::load_view($theme);
     // Translation
     /** @var Translate lang */
     $this->lang = NCModuleCore::load_lang();
     // Module level routing
     /** @var NCRouter map */
     $this->map = new NCRouter($this, $namespace);
     // Adding sitemap to urls
     $this->map->addRoute('sitemap.xml', [$this, 'sitemap'], 'sitemap');
     // Register reverse url filter
     $this->view->twig->addFilter(new \Twig_SimpleFilter('url', [$this->map, 'reverse_filter']));
     // Register translate filters
     $this->view->twig->addFilter(new \Twig_SimpleFilter('lang', [$this->lang, 'translate']));
     $this->view->twig->addFilter(new \Twig_SimpleFilter('dlang', [$this->lang, 'translate_date']));
     // Assign user
     $this->view->assign('user', $this->user ? $this->user->to_array() : []);
     $this->view->assign('group', $this->user ? $this->user->group : []);
     // Assign captcha URL
     $this->view->assign('secure_image', NCModuleCore::$captcha_url);
     // Loading modules globals
     $this->view->load_globals($this, $this->lang);
     // Disable access to banned users
     if ($this->user->ban_time > time() || $this->user->ban_time == -1) {
         Env::$response->setContent($this->errorBanned(Env::$request, $this->user->ban_reason));
         Env::$response->send();
         return;
     }
     // Check access to current module
     if (!$this->access()) {
         Env::$response->setContent($this->error403(Env::$request));
         Env::$response->send();
         return;
     }
     // Build current module map
     $this->route();
     /** @var NCRoute $route */
     $route = $this->map->match($url);
     // Check route
     if (!is_callable($route->callback)) {
         Env::$response->setContent($this->error404(Env::$request));
         Env::$response->send();
         return;
     }
     // Bufferization content
     ob_start();
     $this->configure();
     if (strpos($url, 'sitemap.xml') > -1) {
         Env::$response->headers->set('Content-Type', 'application/xml');
         $response = call_user_func($route->callback, new NCSitemapBuilder(), $this->map);
         $response = strval($response);
     } else {
         $response = call_user_func($route->callback, Env::$request, $route->matches);
     }
     $buffer = ob_get_clean();
     Env::$response->setContent(!is_null($response) ? $response : $buffer);
     // Flush content
     Env::$response->send();
 }