示例#1
0
 /**
  *
  * @param string $username
  * @param string $password
  * @param array $options
  * @return mixed True = logged in, false = invalid password, null = not logged in
  */
 public static function login($username = null, $password = null, $options = array())
 {
     $options += array('remember' => true);
     $remember = SlConfigure::read('Auth.options.remember');
     if ($username) {
         // normal login
         $success = self::_login($username, $password);
         if ($success && $options['remember'] && $remember) {
             SlCookie::write('Auth.user', compact('username', 'password'), true, $remember);
         }
         return $success;
     } else {
         // autologin
         $user = SlCookie::read('Auth.user');
         if ($user) {
             if (self::_login($user['username'], $user['password'])) {
                 SlConfigure::setCollections();
                 return true;
             }
         }
     }
     self::logout();
 }
示例#2
0
 protected static function _load()
 {
     self::$_loaded = true;
     // load core configurations
     self::load('default.php');
     // load extensions' configurations
     SlExtensions::getInstance();
     if (!self::load('site.php')) {
         self::load('site.sample.php');
         $isHtml = isset($_GET['url']) && !preg_match('!(^|/)(js|css|img)/|\\.(rss|xml|atom)|/isAjax:1$!', '/' . $_GET['url']);
         if (!Configure::read() && $isHtml && env('HTTP_X_REQUESTED_WITH') !== "XMLHttpRequest") {
             self::write('Message.noConfig', '<b>Site configuration file not found!</b><br />Please create <em>/app/config/site.php</em>. You may use <em>/app/config/site.sample.php</em> as a template.');
         }
     }
     self::$_persistentData = self::load(TMP . 'sl_configuration.php');
     if (SlSession::started()) {
         self::$_data['session'] =& SlSession::$data;
     }
     SlCookie::ready();
     self::setCollections();
     Sl::setLocale();
     // If you are on PHP 5.3 correct your server timezone to fix the date & time related errors.
     $tz = self::read('I18n.options.timeZone');
     if ($tz) {
         date_default_timezone_set($tz);
     }
 }
示例#3
0
 public function destroy()
 {
     return SlCookie::clear();
 }
示例#4
0
 public static function clear()
 {
     self::ready();
     foreach (self::$_cookies as $name) {
         self::delete($name);
     }
     self::$_cookies = array();
 }
示例#5
0
 /**
  * Set current language
  *
  * @param string $lang
  * @return bool Success
  */
 public static function setLocale($lang = null, $setCookie = false)
 {
     $locales = SlConfigure::read('I18n.locales');
     if (empty($locales)) {
         $languages = SlConfigure::read1('I18n.languages');
         $langs = array_keys($languages);
         $locales = array();
         $catalogs = array();
         if (!$langs) {
             $langs = array('en');
         }
         App::import('Core', 'l10n');
         $l10n = new L10n();
         foreach ($langs as $lang_) {
             $catalog = $l10n->catalog($lang_);
             if ($catalog) {
                 $catalogs[$lang_] = $catalog;
                 $locales[$lang_] = $catalog['locale'];
             }
         }
         $langs = array_keys($locales);
         SlConfigure::write('I18n.langs', $langs);
         SlConfigure::write('I18n.catalogs', $catalogs);
         SlConfigure::write('I18n.locales', $locales);
         if (empty($lang)) {
             $lang = SlCookie::read('I18n.lang');
             // guess language based on Accept-Language header
             if (empty($lang)) {
                 $envLangs = explode(',', env('HTTP_ACCEPT_LANGUAGE'));
                 foreach ($envLangs as $envLang) {
                     list($envLang) = explode(';', $envLang);
                     if (isset($locales[$envLang])) {
                         $lang = $envLang;
                         break;
                     }
                 }
                 if (empty($lang)) {
                     $lang = SlConfigure::read('I18n.lang');
                 }
             }
             // convert locale_id to lang_id
             $lang_ = array_search($lang, $locales);
             if ($lang_) {
                 $lang = $lang_;
             }
             if (empty($lang) || !isset($locales[$lang])) {
                 $lang = $langs[0];
             }
         }
     } else {
         $catalogs = SlConfigure::read('I18n.catalogs');
     }
     if ($lang) {
         // convert locale_id to lang_id
         $lang_ = array_search($lang, $locales);
         if ($lang_) {
             $lang = $lang_;
         }
         if (isset($locales[$lang])) {
             SlConfigure::write('I18n.lang', $lang);
             SlConfigure::write('I18n.catalog', $catalogs[$lang]);
             SlConfigure::write('I18n.locale', $locales[$lang]);
             Configure::write('Config.language', $locales[$lang]);
             if ($setCookie) {
                 SlCookie::write('I18n.lang', $lang, false, "+1 year");
             }
             SlConfigure::localeChanged();
             return true;
         }
     }
     return false;
 }