public static function authenticate() { $security_token = self::get_security_token(); $security_token_key = moojon_config::get('security_token_key'); $primary_key = moojon_primary_key::NAME; $security_identity_key = moojon_config::get('security_identity_key'); $security_password_key = moojon_config::get('security_password_key'); $security_model_class = moojon_config::get('security_model'); $security_model = new $security_model_class(); $security_identity_data_type = $security_model->get_column($security_identity_key)->get_data_type(); $security_password_data_type = $security_model->get_column($security_password_key)->get_data_type(); $security_key = moojon_config::get('security_key'); $login_attempt = self::login_attempt($security_key); if (!$security_token) { if ($login_attempt) { $security = moojon_post::get($security_key); $security_identity_value = $security[$security_identity_key]; $security_password_value = $security[$security_password_key]; $where = "`{$security_identity_key}` = :{$security_identity_key} AND `{$security_password_key}` = CONCAT(salt, SHA1(CONCAT(salt, :{$security_password_key})))"; $param_values = array(":{$security_identity_key}" => $security_identity_value, ":{$security_password_key}" => $security_password_value); $param_data_types = array(":{$security_identity_key}" => $security_identity_data_type, ":{$security_password_key}" => $security_password_data_type); } else { return false; } } else { $where = "{$primary_key} = :{$primary_key}"; $param_values = array(":{$primary_key}" => $security_token); $column = new moojon_primary_key(); $param_data_types = array(":{$primary_key}" => $column->get_data_type()); } $records = $security_model->read($where, null, null, $param_values, $param_data_types); if (!$records->count) { self::destroy(); return false; } else { $security_remember_key = moojon_config::get('security_remember_key'); $security_token = $records->first->{$primary_key}; if ($login_attempt) { $security = moojon_post::get($security_key); if (array_key_exists($security_remember_key, $security)) { if (strlen($security[$security_remember_key])) { moojon_cookie::set($security_token_key, $security_token); } } } self::create_security_token($security_token); return $records->first; } }