diff --git a/application/config/aauth.php b/application/config/aauth.php index 4355c5cc..34c4c1bb 100644 --- a/application/config/aauth.php +++ b/application/config/aauth.php @@ -38,7 +38,7 @@ // pm table 'pms' => 'aauth_pms', // system variables - 'aauth_variables' => 'aauth_system_variables', + 'system_variables' => 'aauth_system_variables', // user variables 'user_variables' => 'aauth_user_variables', @@ -57,7 +57,7 @@ // login attempts time interval // default 20 times in one hour - 'max_login_attempt' => 20, + 'max_login_attempt' => 10, // to register email verifitaion need? true / false 'verification' => false, @@ -91,6 +91,7 @@ 'no_user' => 'User not Exist', 'not_verified' => 'Please verify your account.', 'group_exist' => 'Group already exists', + 'no_group' => 'Group doesn\'t exists', 'self_pm' => 'It is not reasonable to send pm to yourself :)', 'no_pm' => 'Pm not found', diff --git a/application/controllers/example.php b/application/controllers/example.php index d9e129a6..774c42e0 100644 --- a/application/controllers/example.php +++ b/application/controllers/example.php @@ -19,11 +19,13 @@ public function __construct() { public function index() { - if ($this->aauth->login('admin@admin.com', 'password', true)) + if ($this->aauth->login('aa@a.com', '12345')) echo 'tmm'; else echo 'hyr'; //echo date("Y-m-d H:i:s"); + + $this->aauth->print_errors(); } function debug(){ @@ -95,11 +97,16 @@ function settings() { //$this->aauth->_reset_login_attempts(1); } + public function login_fast(){ + $this->aauth->login_fast(1); + } public function is_loggedin() { if ($this->aauth->is_loggedin()) echo 'girdin'; + + print_r( $this->aauth->get_user() ); } public function logout() { @@ -109,7 +116,7 @@ public function logout() { public function is_member() { - if ($this->aauth->is_member('Admin')) + if ($this->aauth->is_member('deneme',9)) echo 'uye'; } @@ -128,14 +135,19 @@ function get_user_groups(){ } } - public function group() { + public function get_group_name() { + + echo $this->aauth->get_group_name(1); + } + + public function get_group_id() { echo $this->aauth->get_group_id("Admin"); } public function list_users() { echo '
';
-        print_r($this->aauth->list_users("Mod"));
+        print_r($this->aauth->list_users());
         echo '
'; } @@ -147,25 +159,27 @@ public function list_groups() { public function check_email() { - if ($this->aauth->check_email("emre@emreakay.com")) + if ($this->aauth->check_email("aa@a.com")) echo 'uygun '; else echo 'alindi '; - echo $this->aauth->get_errors(); - - echo ' sadsad'; + $this->aauth->print_errors(); } public function get_user() { - print_r($this->aauth->get_user(1)); + print_r($this->aauth->get_user()); } function create_user() { - echo "as"; + $a = $this->aauth->create_user("aaa@a.com", "12345", "aa"); + + if ($a) + echo "tmm "; + else + echo "hyr "; - $a = $this->aauth->create_user("aaasada@aaasda.com", "asd", "asdasd11"); print_r($this->aauth->get_user($a)); @@ -183,39 +197,180 @@ function ban_user() { print_r($a); } + function delete_user() { + + $a = $this->aauth->delete_user(7); + + print_r($a); + } + + function unban_user() { + + $a = $this->aauth->unban_user(6); + + print_r($a); + } + function update_user() { - $a = $this->aauth->update_user(3, "xxx@ssdas.com", "asd", "asdasd"); + $a = $this->aauth->update_user(6, "a@a.com", "12345", "tested"); + + print_r($a); + } + + function update_activity() { + $a = $this->aauth->update_activity(); + + print_r($a); + } + + function update_login_attempt() { + $a = $this->aauth->update_login_attempts("a@a.com"); print_r($a); } function create_group() { - $a = $this->aauth->create_group("denemeee"); + $a = $this->aauth->create_group("deneme"); } function delete_group() { - $a = $this->aauth->delete_group(3); + $a = $this->aauth->delete_group("deneme"); } function update_group() { - $a = $this->aauth->update_group(4, "zxxx"); + $a = $this->aauth->update_group("deneme", "zxxx"); } function add_member() { - $a = $this->aauth->add_member(1, 4); + $a = $this->aauth->add_member(8, "deneme"); } function fire_member() { - $a = $this->aauth->fire_member(1, 4); + $a = $this->aauth->fire_member(8, "deneme"); + } + + + function create_perm() { + + $a = $this->aauth->create_perm("deneme","def"); + } + + + function update_perm() { + + $a = $this->aauth->update_perm("deneme","deneme","xxx"); + } + + function delete_perm() { + + $a = $this->aauth->update_perm("deneme","deneme","xxx"); + } + + function allow_user() { + + $a = $this->aauth->allow_user(9,"deneme"); + } + + + function deny_user() { + + $a = $this->aauth->deny_user(9,"deneme"); + } + + function allow_group() { + + $a = $this->aauth->allow_group("deneme","deneme"); + } + + function deny_group() { + + $a = $this->aauth->deny_group("deneme","deneme"); + } + + function list_perms() { + + $a = $this->aauth->list_perms(); + print_r($a); + } + + function get_perm_id() { + + $a = $this->aauth->get_perm_id("deneme"); + print_r($a); + } + + + function send_pm() { + + $a = $this->aauth->send_pm(1,8,'s',"w"); + $this->aauth->print_errors(); + } + + function list_pms(){ + + print_r( $this->aauth->list_pms() ); + } + + function get_pm(){ + + print_r( $this->aauth->get_pm(39,false)); + } + + function delete_pm(){ + + $this->aauth->delete_pm(41); + } + + + function count_unread_pms(){ + + echo $this->aauth->count_unread_pms(8); + } + + function error(){ + + $this->aauth->error("asd"); + $this->aauth->error("xasd"); + $this->aauth->keep_errors(); + $this->aauth->print_errors(); + + } + + function keep_errors(){ + + $this->aauth->print_errors(); + //$this->aauth->keep_errors(); + } + + function set_user_var(){ + $this->aauth->set_user_var("emre","akasy"); + } + + function unset_user_var(){ + $this->aauth->unset_user_var("emre"); + } + + function get_user_var(){ + echo $this->aauth->get_user_var("emre"); + } + + function set_system_var(){ + $this->aauth->set_system_var("emre","akay"); + } + + function unset_system_var(){ + $this->aauth->unset_system_var("emre"); + } + + function get_system_var(){ + echo $this->aauth->get_system_var("emre"); } - - -} +}//end /* End of file welcome.php */ diff --git a/application/libraries/Aauth.php b/application/libraries/Aauth.php index 61cc7d9b..46651895 100644 --- a/application/libraries/Aauth.php +++ b/application/libraries/Aauth.php @@ -57,9 +57,6 @@ class Aauth { */ public function __construct() { - // Delete all errors at first - $this->errors = array(); - // get main CI object $this->CI = & get_instance(); @@ -77,24 +74,12 @@ public function __construct() { $this->config_vars = & $this->CI->config->item('aauth'); } - /** - * Hash password - * Hash the password for storage in the database - * (thanks to Jacob Tomlinson for contribution) - * @param string $pass Password to hash - * @param $userid - * @return string Hashed password - */ - function hash_password($pass, $userid) { - - $salt = md5($userid); - return hash('sha256', $salt.$pass); - } ######################## - # User Functions + # Login Functions ######################## + //tested /** * Login user * Check provided details against the database. Add items to error array on fail, create session if success @@ -132,7 +117,7 @@ public function login($email, $pass, $remember = FALSE) { // only email found and login attempts exceeded if ($query->num_rows() > 0 and $this->config_vars['ddos_protection'] and ! $this->update_login_attempts($row->email)) { - $this->error($this->config_vars['wrong']); + $this->error($this->config_vars['exceeded']); return false; } @@ -211,6 +196,7 @@ public function login($email, $pass, $remember = FALSE) { } } + //tested /** * Check user login * Checks if user logged in, also checks remember. @@ -275,6 +261,7 @@ public function control( $perm_par ){ } + //tested /** * Logout user * Destroys the CodeIgniter session and remove cookies to log out user. @@ -294,52 +281,7 @@ public function logout() { return $this->CI->session->sess_destroy(); } - /** - * List users - * Return users as an object array - * @param bool|int $group_par Specify group id to list group or false for all users - * @param string $limit Limit of users to be returned - * @param bool $offset Offset for limited number of users - * @param bool $include_banneds Include banned users - * @return array Array of users - */ - public function list_users($group_par = FALSE, $limit = FALSE, $offset = FALSE, $include_banneds = FALSE) { - - // if group_par is given - if ($group_par != FALSE) { - - $group_par = $this->get_group_id($group_par); - $this->CI->db->select('*') - ->from($this->config_vars['users']) - ->join($this->config_vars['user_to_group'], $this->config_vars['users'] . ".id = " . $this->config_vars['user_to_group'] . ".user_id") - ->where($this->config_vars['user_to_group'] . ".group_id", $group_par); - - // if group_par is not given, lists all users - } else { - - $this->CI->db->select('*') - ->from($this->config_vars['users']); - } - - // banneds - if (!$include_banneds) { - $this->CI->db->where('banned != ', 1); - } - - // limit - if ($limit) { - - if ($offset == FALSE) - $this->CI->db->limit($limit); - else - $this->CI->db->limit($limit, $offset); - } - - $query = $this->CI->db->get(); - - return $query->result(); - } - + //tested /** * Fast login * Login with just a user id @@ -368,6 +310,174 @@ public function login_fast($user_id){ } } + /** + * Reset last login attempts + * Sets a users 'last login attempts' to null + * @param int $user_id User id to reset + * @return bool Reset fails/succeeds + */ + public function reset_login_attempts($user_id) { + + $data['last_login_attempts'] = null; + $this->CI->db->where('id', $user_id); + return $this->CI->db->update($this->config_vars['users'], $data); + } + + /** + * Remind password + * Emails user with link to reset password + * @param string $email Email for account to remind + */ + public function remind_password($email){ + + $query = $this->CI->db->where( 'email', $email ); + $query = $this->CI->db->get( $this->config_vars['users'] ); + + if ($query->num_rows() > 0){ + $row = $query->row(); + + $ver_code = random_string('alnum', 16); + + $data['verification_code'] = $ver_code; + + $this->CI->db->where('email', $email); + $this->CI->db->update($this->config_vars['users'], $data); + + $this->CI->email->from( $this->config_vars['email'], $this->config_vars['name']); + $this->CI->email->to($row->email); + $this->CI->email->subject($this->config_vars['reset']); + $this->CI->email->message($this->config_vars['remind'] . ' ' . + $this->config_vars['remind'] . $row->id . '/' . $ver_code ); + $this->CI->email->send(); + } + } + + /** + * Reset password + * Generate new password and email it to the user + * @param int $user_id User id to reset password for + * @param string $ver_code Verification code for account + * @return bool Password reset fails/succeeds + */ + public function reset_password($user_id, $ver_code){ + + $query = $this->CI->db->where('id', $user_id); + $query = $this->CI->db->where('verification_code', $ver_code); + $query = $this->CI->db->get( $this->config_vars['users'] ); + + $pass = random_string('alphanum',8); + + if( $query->num_rows() > 0 ){ + + $data = array( + 'verification_code' => '', + 'pass' => $this->hash_password($pass, $user_id) + ); + + $row = $query->row(); + $email = $row->email; + + $this->CI->db->where('id', $user_id); + $this->CI->db->update($this->config_vars['users'] , $data); + + $this->CI->email->from( $this->config_vars['email'], $this->config_vars['name']); + $this->CI->email->to($email); + $this->CI->email->subject($this->config_vars['reset']); + $this->CI->email->message($this->config_vars['new_password'] . $pass); + $this->CI->email->send(); + + return true; + } + + return false; + } + + //tested + /** + * Update last login + * Update user's last login date + * @param int|bool $user_id User id to update or false for current user + * @return bool Update fails/succeeds + */ + public function update_last_login($user_id = FALSE) { + + if ($user_id == FALSE) + $user_id = $this->CI->session->userdata('id'); + + $data['last_login'] = date("Y-m-d H:i:s"); + $data['ip_address'] = $this->CI->input->ip_address(); + + $this->CI->db->where('id', $user_id); + return $this->CI->db->update($this->config_vars['users'], $data); + } + + + //tested + /** + * Update login attempt and if exceeds return false + * Update user's last login attemp date and number date + * @param string $email User email + * @return bool + */ + public function update_login_attempts($email) { + + $user_id = $this->get_user_id($email); + + $query = $this->CI->db->where('id', $user_id); + $query = $this->CI->db->get( $this->config_vars['users'] ); + $row = $query->row(); + + + $data = array(); + + if ( strtotime($row->last_login_attempt) == strtotime(date("Y-m-d H:0:0"))) { + + $data['login_attempts'] = $row->login_attempts + 1; + + $query = $this->CI->db->where('id', $user_id); + $this->CI->db->update($this->config_vars['users'], $data); + + } else { + + $data['last_login_attempt'] = date("Y-m-d H:0:0"); + $data['login_attempts'] = 1; + + $this->CI->db->where('id', $user_id); + $this->CI->db->update($this->config_vars['users'], $data); + + } + + if ( $data['login_attempts'] > $this->config_vars['max_login_attempt'] ) { + return false; + } else { + return true; + } + + } + + /** + * Update remember + * Update amount of time a user is remembered for + * @param int $user_id User id to update + * @param int $expression + * @param int $expire + * @return bool Update fails/succeeds + */ + public function update_remember($user_id, $expression=null, $expire=null) { + + $data['remember_time'] = $expire; + $data['remember_exp'] = $expression; + + $query = $this->CI->db->where('id',$user_id); + return $this->CI->db->update($this->config_vars['users'], $data); + } + + + ######################## + # User Functions + ######################## + + //tested /** * Create user * Creates a new user @@ -380,10 +490,12 @@ public function create_user($email, $pass, $name='') { $valid = true; + // if email is already exist if ( ! $this->check_email($email)) { $this->error($this->config_vars['email_taken']); $valid = false; } + if ( ! valid_email($email)){ $this->error($this->config_vars['email_invalid']); $valid = false; @@ -398,7 +510,6 @@ public function create_user($email, $pass, $name='') { } if (!$valid) { - echo "2"; return false; } $data = array( @@ -407,8 +518,6 @@ public function create_user($email, $pass, $name='') { 'name' => $name, ); - echo "3"; - if ( $this->CI->db->insert($this->config_vars['users'], $data )){ $user_id = $this->CI->db->insert_id(); @@ -441,6 +550,7 @@ public function create_user($email, $pass, $name='') { } } + //tested /** * Update user * Updates existing user details @@ -470,370 +580,223 @@ public function update_user($user_id, $email = FALSE, $pass = FALSE, $name = FAL return $this->CI->db->update($this->config_vars['users'], $data); } + //tested /** - * Send verification email - * Sends a verification email based on user id - * @param int $user_id User id to send verification email to + * List users + * Return users as an object array + * @param bool|int $group_par Specify group id to list group or false for all users + * @param string $limit Limit of users to be returned + * @param bool $offset Offset for limited number of users + * @param bool $include_banneds Include banned users + * @return array Array of users */ - public function send_verification($user_id){ - - $query = $this->CI->db->where( 'id', $user_id ); - $query = $this->CI->db->get( $this->config_vars['users'] ); - - if ($query->num_rows() > 0){ - $row = $query->row(); + public function list_users($group_par = FALSE, $limit = FALSE, $offset = FALSE, $include_banneds = FALSE) { - $ver_code = random_string('alnum', 16); + // if group_par is given + if ($group_par != FALSE) { - $data['verification_code'] = $ver_code; + $group_par = $this->get_group_id($group_par); + $this->CI->db->select('*') + ->from($this->config_vars['users']) + ->join($this->config_vars['user_to_group'], $this->config_vars['users'] . ".id = " . $this->config_vars['user_to_group'] . ".user_id") + ->where($this->config_vars['user_to_group'] . ".group_id", $group_par); - $this->CI->db->where('id', $user_id); - $this->CI->db->update($this->config_vars['users'], $data); + // if group_par is not given, lists all users + } else { - $this->CI->email->from( $this->config_vars['email'], $this->config_vars['name']); - $this->CI->email->to($row->email); - $this->CI->email->subject($this->config_vars['email']); - $this->CI->email->message($this->config_vars['code'] . $ver_code . - $this->config_vars['link'] . $user_id . '/' . $ver_code ); - $this->CI->email->send(); + $this->CI->db->select('*') + ->from($this->config_vars['users']); } - } - - /** - * Verify user - * Activates user account based on verification code - * @param int $user_id User id to activate - * @param string $ver_code Code to validate against - * @return bool Activation fails/succeeds - */ - public function verify_user($user_id, $ver_code){ - - $query = $this->CI->db->where('id', $user_id); - $query = $this->CI->db->where('verification_code', $ver_code); - $query = $this->CI->db->get( $this->config_vars['users'] ); - - // if ver code is true - if( $query->num_rows() > 0 ){ - $data = array( - 'verification_code' => '', - 'banned' => 0 - ); - - $this->CI->db->where('id', $user_id); - $this->CI->db->update($this->config_vars['users'] , $data); - return true; + // banneds + if (!$include_banneds) { + $this->CI->db->where('banned != ', 1); } - return false; - } - /** - * Reset last login attempts - * Sets a users 'last login attempts' to null - * @param int $user_id User id to reset - * @return bool Reset fails/succeeds - */ - public function reset_login_attempts($user_id) { - - $data['last_login_attempts'] = null; - $this->CI->db->where('id', $user_id); - return $this->CI->db->update($this->config_vars['users'], $data); - } - - /** - * Ban user - * Bans a user account - * @param int $user_id User id to ban - * @return bool Ban fails/succeeds - */ - public function ban_user($user_id) { - - $data = array( - 'banned' => 1, - 'verification_code' => '' - ); - - $this->CI->db->where('id', $user_id); - - return $this->CI->db->update($this->config_vars['users'], $data); - } - - /** - * Unban user - * Activates user account - * Same with unban_user() - * @param int $user_id User id to activate - * @return bool Activation fails/succeeds - */ - public function unlock_user($user_id) { + // limit + if ($limit) { - $data = array( - 'banned' => 0 - ); + if ($offset == FALSE) + $this->CI->db->limit($limit); + else + $this->CI->db->limit($limit, $offset); + } - $this->CI->db->where('id', $user_id); + $query = $this->CI->db->get(); - return $this->CI->db->update($this->config_vars['users'], $data); + return $query->result(); } + //tested /** - * Unban user - * Activates user account - * Same with unlock_user() - * @param int $user_id User id to activate - * @return bool Activation fails/succeeds + * Get user + * Get user information + * @param int|bool $user_id User id to get or false for current user + * @return object User information */ - public function unban_user($user_id) { - - return $this->unlock_user($user_id); - } - + public function get_user($user_id = FALSE) { - /** - * Check user banned - * Checks if a user is banned - * @param int $user_id User id to check - * @return bool Flase if banned, True if not - */ - public function is_banned($user_id) { + if ($user_id == FALSE) + $user_id = $this->CI->session->userdata('id'); $query = $this->CI->db->where('id', $user_id); - $query = $this->CI->db->where('banned', 1); - - $query = $this->CI->db->get($this->config_vars['users']); - - if ($query->num_rows() > 0) - return TRUE; - else - return FALSE; - } - - /** - * Delete user - * Delete a user from database. WARNING Can't be undone - * @param int $user_id User id to delete - */ - public function delete_user($user_id) { - - $this->CI->db->where('id', $user_id); - $this->CI->db->delete($this->config_vars['users']); - } - - /** - * Check email - * Checks if an email address is available - * @param string $email Email to check - * @return bool True if available, False if not - */ - public function check_email($email) { - - $this->CI->db->where("email", $email); $query = $this->CI->db->get($this->config_vars['users']); - if ($query->num_rows() > 0) { - $this->info($this->config_vars['email_taken']); + if ($query->num_rows() <= 0){ + $this->error($this->config_vars['no_user']); return FALSE; } - else - return TRUE; - } - - /** - * Remind password - * Emails user with link to reset password - * @param string $email Email for account to remind - */ - public function remind_password($email){ - - $query = $this->CI->db->where( 'email', $email ); - $query = $this->CI->db->get( $this->config_vars['users'] ); - - if ($query->num_rows() > 0){ - $row = $query->row(); - - $ver_code = random_string('alnum', 16); - - $data['verification_code'] = $ver_code; - - $this->CI->db->where('email', $email); - $this->CI->db->update($this->config_vars['users'], $data); - - $this->CI->email->from( $this->config_vars['email'], $this->config_vars['name']); - $this->CI->email->to($row->email); - $this->CI->email->subject($this->config_vars['reset']); - $this->CI->email->message($this->config_vars['remind'] . ' ' . - $this->config_vars['remind'] . $row->id . '/' . $ver_code ); - $this->CI->email->send(); - } + return $query->row(); } /** - * Reset password - * Generate new password and email it to the user - * @param int $user_id User id to reset password for - * @param string $ver_code Verification code for account - * @return bool Password reset fails/succeeds + * Verify user + * Activates user account based on verification code + * @param int $user_id User id to activate + * @param string $ver_code Code to validate against + * @return bool Activation fails/succeeds */ - public function reset_password($user_id, $ver_code){ + public function verify_user($user_id, $ver_code){ $query = $this->CI->db->where('id', $user_id); $query = $this->CI->db->where('verification_code', $ver_code); $query = $this->CI->db->get( $this->config_vars['users'] ); - $pass = random_string('alphanum',8); - - if( $query->num_rows() > 0 ){ - - $data = array( - 'verification_code' => '', - 'pass' => $this->hash_password($pass, $user_id) - ); - - $row = $query->row(); - $email = $row->email; - - $this->CI->db->where('id', $user_id); - $this->CI->db->update($this->config_vars['users'] , $data); - - $this->CI->email->from( $this->config_vars['email'], $this->config_vars['name']); - $this->CI->email->to($email); - $this->CI->email->subject($this->config_vars['reset']); - $this->CI->email->message($this->config_vars['new_password'] . $pass); - $this->CI->email->send(); - - return true; - } - - return false; - } - - /** - * Update activity - * Update user's last activity date - * @param int|bool $user_id User id to update or false for current user - * @return bool Update fails/succeeds - */ - public function update_activity($user_id = FALSE) { - - if ($user_id == FALSE) - $user_id = $this->CI->session->userdata('id'); - - if($user_id==false){return false;} - - $data['last_activity'] = date("Y-m-d H:i:s"); - - $query = $this->CI->db->where('id',$user_id); - return $this->CI->db->update($this->config_vars['users'], $data); - } - - /** - * Update last login - * Update user's last login date - * @param int|bool $user_id User id to update or false for current user - * @return bool Update fails/succeeds - */ - public function update_last_login($user_id = FALSE) { - - if ($user_id == FALSE) - $user_id = $this->CI->session->userdata('id'); + // if ver code is true + if( $query->num_rows() > 0 ){ - $data['last_login'] = date("Y-m-d H:i:s"); - $data['ip_address'] = $this->CI->input->ip_address(); + $data = array( + 'verification_code' => '', + 'banned' => 0 + ); - $this->CI->db->where('id', $user_id); - return $this->CI->db->update($this->config_vars['users'], $data); + $this->CI->db->where('id', $user_id); + $this->CI->db->update($this->config_vars['users'] , $data); + return true; + } + return false; } - /** - * Update login attempt and if exceeds return false - * Update user's last login attemp date and number date - * @param string $email User email - * @return bool + * Send verification email + * Sends a verification email based on user id + * @param int $user_id User id to send verification email to */ - public function update_login_attempts($email) { - - $user_id = $this->get_user_id($email); + public function send_verification($user_id){ - $query = $this->CI->db->where('id', $user_id); + $query = $this->CI->db->where( 'id', $user_id ); $query = $this->CI->db->get( $this->config_vars['users'] ); - $row = $query->row(); + if ($query->num_rows() > 0){ + $row = $query->row(); - $data = array(); - - if ( $row->last_login_attempt == date("Y-m-d H:0:0")) { + $ver_code = random_string('alnum', 16); - $data['login_attempts'] = $row->login_attempts + 1; + $data['verification_code'] = $ver_code; - $query = $this->CI->db->where('id', $user_id); + $this->CI->db->where('id', $user_id); $this->CI->db->update($this->config_vars['users'], $data); - } else { + $this->CI->email->from( $this->config_vars['email'], $this->config_vars['name']); + $this->CI->email->to($row->email); + $this->CI->email->subject($this->config_vars['email']); + $this->CI->email->message($this->config_vars['code'] . $ver_code . + $this->config_vars['link'] . $user_id . '/' . $ver_code ); + $this->CI->email->send(); + } + } - $data['last_login_attempt'] = date("Y-m-d H:0:0"); - $data['login_attempts'] = 1; + //not tested excatly + /** + * Delete user + * Delete a user from database. WARNING Can't be undone + * @param int $user_id User id to delete + */ + public function delete_user($user_id) { - $this->CI->db->where('id', $user_id); - $this->CI->db->update($this->config_vars['users'], $data); + $this->CI->db->where('id', $user_id); + $this->CI->db->delete($this->config_vars['users']); - } + // delete from perm_to_user + $this->CI->db->where('user_id', $user_id); + $this->CI->db->delete($this->config_vars['perm_to_user']); - if ( $data['login_attempts'] > $this->config_vars['max_login_attempt'] ) { - return false; - } else { - return true; - } + // delete from user_to_group + $this->CI->db->where('user_id', $user_id); + $this->CI->db->delete($this->config_vars['user_to_group']); + // delete user vars + $this->CI->db->where('user_id', $user_id); + $this->CI->db->delete($this->config_vars['user_variables']); } + //tested /** - * Update remember - * Update amount of time a user is remembered for - * @param int $user_id User id to update - * @param int $expression - * @param int $expire - * @return bool Update fails/succeeds + * Ban user + * Bans a user account + * @param int $user_id User id to ban + * @return bool Ban fails/succeeds */ - public function update_remember($user_id, $expression=null, $expire=null) { + public function ban_user($user_id) { - $data['remember_time'] = $expire; - $data['remember_exp'] = $expression; + $data = array( + 'banned' => 1, + 'verification_code' => '' + ); + + $this->CI->db->where('id', $user_id); - $query = $this->CI->db->where('id',$user_id); return $this->CI->db->update($this->config_vars['users'], $data); } + //tested /** - * Get user - * Get user information - * @param int|bool $user_id User id to get or false for current user - * @return object User information + * Unban user + * Activates user account + * Same with unlock_user() + * @param int $user_id User id to activate + * @return bool Activation fails/succeeds */ - public function get_user($user_id = FALSE) { + public function unban_user($user_id) { - if ($user_id == FALSE) - $user_id = $this->CI->session->userdata('id'); + $data = array( + 'banned' => 0 + ); + + $this->CI->db->where('id', $user_id); + + return $this->CI->db->update($this->config_vars['users'], $data); + } + + //tested + /** + * Check user banned + * Checks if a user is banned + * @param int $user_id User id to check + * @return bool False if banned, True if not + */ + public function is_banned($user_id) { $query = $this->CI->db->where('id', $user_id); + $query = $this->CI->db->where('banned', 1); + $query = $this->CI->db->get($this->config_vars['users']); - if ($query->num_rows() <= 0){ - $this->error($this->config_vars['no_user']); + if ($query->num_rows() > 0) + return TRUE; + else return FALSE; - } - return $query->row(); } /** * Get user id - * Get user id from email address - * @param string $email Email address for user + * Get user id from email address, if par. not given, return current user's id + * @param string|bool $email Email address for user * @return int User id */ public function get_user_id($email=false) { - if(!$email){ + if( ! $email){ $query = $this->CI->db->where('id', $this->CI->session->userdata('id')); } else { $query = $this->CI->db->where('email', $email); @@ -866,10 +829,66 @@ public function get_user_groups($user_id = false){ return $query = $this->CI->db->get()->result(); } + //tested + /** + * Check email + * Checks if an email address is available + * @param string $email Email to check + * @return bool True if available, False if not + */ + public function check_email($email) { + + $this->CI->db->where("email", $email); + $query = $this->CI->db->get($this->config_vars['users']); + + if ($query->num_rows() > 0) { + $this->info($this->config_vars['email_taken']); + return FALSE; + } + else + return TRUE; + } + + //tested + /** + * Update activity + * Update user's last activity date + * @param int|bool $user_id User id to update or false for current user + * @return bool Update fails/succeeds + */ + public function update_activity($user_id = FALSE) { + + if ($user_id == FALSE) + $user_id = $this->CI->session->userdata('id'); + + if($user_id==false){return false;} + + $data['last_activity'] = date("Y-m-d H:i:s"); + + $query = $this->CI->db->where('id',$user_id); + return $this->CI->db->update($this->config_vars['users'], $data); + } + + //tested + /** + * Hash password + * Hash the password for storage in the database + * (thanks to Jacob Tomlinson for contribution) + * @param string $pass Password to hash + * @param $userid + * @return string Hashed password + */ + function hash_password($pass, $userid) { + + $salt = md5($userid); + return hash('sha256', $salt.$pass); + } + ######################## # Group Functions ######################## + //tested /** * Create group * Creates a new group @@ -893,6 +912,7 @@ public function create_group($group_name) { return FALSE; } + //tested /** * Update group * Change a groups name @@ -900,7 +920,9 @@ public function create_group($group_name) { * @param string $group_name New group name * @return bool Update success/failure */ - public function update_group($group_id, $group_name) { + public function update_group($group_par, $group_name) { + + $group_id = $this->get_group_id($group_par); $data['name'] = $group_name; @@ -908,13 +930,16 @@ public function update_group($group_id, $group_name) { return $this->CI->db->update($this->config_vars['groups'], $data); } + //tested /** * Delete group * Delete a group from database. WARNING Can't be undone * @param int $group_id User id to delete * @return bool Delete success/failure */ - public function delete_group($group_id) { + public function delete_group($group_par) { + + $group_id = $this->get_group_id($group_par); // bug fixed // now users are deleted from user_to_group table @@ -925,6 +950,7 @@ public function delete_group($group_id) { return $this->CI->db->delete($this->config_vars['groups']); } + //tested /** * Add member * Add a user to a group @@ -934,16 +960,22 @@ public function delete_group($group_id) { */ public function add_member($user_id, $group_par) { - $group_par = $this->get_group_id($group_par); + $group_id = $this->get_group_id($group_par); + + if( ! $group_id ) { + + $this->error( $this->config_vars['group_exist'] ); + return false; + } $query = $this->CI->db->where('user_id',$user_id); - $query = $this->CI->db->where('group_id',$group_par); + $query = $this->CI->db->where('group_id',$group_id); $query = $this->CI->db->get($this->config_vars['user_to_group']); if ($query->num_rows() < 1) { $data = array( 'user_id' => $user_id, - 'group_id' => $group_par + 'group_id' => $group_id ); return $this->CI->db->insert($this->config_vars['user_to_group'], $data); @@ -952,6 +984,7 @@ public function add_member($user_id, $group_par) { return true; } + //tested /** * Remove member * Remove a user from a group @@ -967,18 +1000,7 @@ public function remove_member($user_id, $group_par) { return $this->CI->db->delete($this->config_vars['user_to_group']); } - /** - * Fire member - * Remove a user from a group same as remove member - * @param int $user_id User id to remove from group - * @param int|string $group_par Group id or name to remove user from - * @return bool Remove success/failure - */ - public function fire_member($user_id, $group_par) { - - return $this->remove_member($user_id,$group_par); - } - + //tested /** * Is member * Check if current user is a member of a group @@ -989,30 +1011,26 @@ public function fire_member($user_id, $group_par) { public function is_member( $group_par, $user_id = false ) { // if user_id false (not given), current user - if(!$user_id){ + if( ! $user_id){ $user_id = $this->CI->session->userdata('id'); } $group_id = $this->get_group_id($group_par); - // if found - if (is_numeric($group_id)) { - $query = $this->CI->db->where('user_id', $user_id); - $query = $this->CI->db->where('group_id', $group_par); - $query = $this->CI->db->get($this->config_vars['user_to_group']); + $query = $this->CI->db->where('user_id', $user_id); + $query = $this->CI->db->where('group_id', $group_id); + $query = $this->CI->db->get($this->config_vars['user_to_group']); - $row = $query->row(); + $row = $query->row(); - if ($query->num_rows() > 0) { - return TRUE; - } else { - return FALSE; - } + if ($query->num_rows() > 0) { + return TRUE; } else { - return false; + return FALSE; } } + //tested /** * Is admin * Check if current user is a member of the admin group @@ -1021,9 +1039,10 @@ public function is_member( $group_par, $user_id = false ) { */ public function is_admin( $user_id = false ) { - return $this->is_member($this->config_vars['admin_group'],$user_id); + return $this->is_member($this->config_vars['admin_group'], $user_id); } + //tested /** * List groups * List all groups @@ -1035,6 +1054,8 @@ public function list_groups() { return $query->result(); } + + //tested /** * Get group name * Get group name from group id @@ -1053,13 +1074,14 @@ public function get_group_name($group_id) { return $row->name; } + //tested /** * Get group id - * Get group id from group name or id + * Get group id from group name or id ( ! Case sensitive) * @param int|string $group_par Group id or name to get * @return int Group id */ - public function get_group_id($group_par) { + public function get_group_id ( $group_par ) { if( is_numeric($group_par) ) { return $group_par; } @@ -1077,6 +1099,7 @@ public function get_group_id($group_par) { # Permission Functions ######################## + //tested /** * Create permission * Creates a new permission type @@ -1101,6 +1124,7 @@ public function create_perm($perm_name, $definition='') { return FALSE; } + //tested /** * Update permission * Updates permission name and description @@ -1109,19 +1133,21 @@ public function create_perm($perm_name, $definition='') { * @param string $definition Permission description * @return bool Update success/failure */ - public function update_perm($perm_par, $perm_name, $definition=false) { + public function update_perm($perm_par, $perm_name=false, $definition=false) { $perm_id = $this->get_perm_id($perm_par); - $data['name'] = $perm_name; + if ($perm_name != false) + $data['name'] = $perm_name; - if ($definition!=false) - $data['definition'] = $perm_name; + if ($definition != false) + $data['definition'] = $definition; $this->CI->db->where('id', $perm_id); return $this->CI->db->update($this->config_vars['perms'], $data); } + //not ok /** * Delete permission * Delete a permission from database. WARNING Can't be undone @@ -1219,11 +1245,11 @@ public function is_group_allowed($perm_par, $group_par=false){ return true; } } - return false; } } + //tested /** * Allow User * Add User to permission @@ -1247,11 +1273,12 @@ public function allow_user($user_id, $perm_par) { 'perm_id' => $perm_id ); - return $this->CI->db->insert($this->config_vars['perm_to_group'], $data); + return $this->CI->db->insert($this->config_vars['perm_to_user'], $data); } return true; } + //tested /** * Deny User * Remove user from permission @@ -1266,10 +1293,10 @@ public function deny_user($user_id, $perm_par) { $this->CI->db->where('user_id', $user_id); $this->CI->db->where('perm_id', $perm_id); - return $this->CI->db->delete($this->config_vars['perm_to_group']); + return $this->CI->db->delete($this->config_vars['perm_to_user']); } - + //tested /** * Allow Group * Add group to permission @@ -1280,24 +1307,26 @@ public function deny_user($user_id, $perm_par) { public function allow_group($group_par, $perm_par) { $perm_id = $this->get_perm_id($perm_par); + $group_id = $this->get_group_id($group_par); - $query = $this->CI->db->where('group_id',$group_par); + $query = $this->CI->db->where('group_id',$group_id); $query = $this->CI->db->where('perm_id',$perm_id); $query = $this->CI->db->get($this->config_vars['perm_to_group']); if ($query->num_rows() < 1) { - $group_par = $this->get_group_id($group_par); $data = array( - 'group_id' => $group_par, + 'group_id' => $group_id, 'perm_id' => $perm_id ); return $this->CI->db->insert($this->config_vars['perm_to_group'], $data); } + return true; } + //tested /** * Deny Group * Remove group from permission @@ -1308,14 +1337,15 @@ public function allow_group($group_par, $perm_par) { public function deny_group($group_par, $perm_par) { $perm_id = $this->get_perm_id($perm_par); + $group_id = $this->get_group_id($group_par); - $group_par = $this->get_group_id($group_par); - $this->CI->db->where('group_id', $group_par); + $this->CI->db->where('group_id', $group_id); $this->CI->db->where('perm_id', $perm_id); return $this->CI->db->delete($this->config_vars['perm_to_group']); } + //tested /** * List Permissions * List all permissions @@ -1327,6 +1357,7 @@ public function list_perms() { return $query->result(); } + //tested /** * Get permission id * Get permission id from permisison name or id @@ -1351,6 +1382,7 @@ public function get_perm_id($perm_par) { # Private Message Functions ######################## + //tested /** * Send Private Message * Send a private message to another user @@ -1378,6 +1410,18 @@ public function send_pm( $sender_id, $receiver_id, $title, $message ){ return false; } + $query = $this->CI->db->where('id', $sender_id); + $query = $this->CI->db->where('banned', 0); + + $query = $this->CI->db->get( $this->config_vars['users'] ); + + // if user not exist or banned + if ( $query->num_rows() < 1 ){ + $this->error($this->config_vars['no_user']); + return false; + } + + $data = array( 'sender_id' => $sender_id, 'receiver_id' => $receiver_id, @@ -1389,6 +1433,7 @@ public function send_pm( $sender_id, $receiver_id, $title, $message ){ return $query = $this->CI->db->insert( $this->config_vars['pms'], $data ); } + //tested /** * List Private Messages * If receiver id not given retruns current user's pms, if sender_id given, it returns only pms from given sender @@ -1415,6 +1460,7 @@ public function list_pms($limit=5, $offset=0, $receiver_id = false, $sender_id=f return $query->result(); } + //tested /** * Get Private Message * Get private message by id @@ -1424,8 +1470,6 @@ public function list_pms($limit=5, $offset=0, $receiver_id = false, $sender_id=f */ public function get_pm($pm_id, $set_as_read = true){ - if ($set_as_read) $this->set_as_read_pm($pm_id); - $query = $this->CI->db->where('id', $pm_id); $query = $this->CI->db->get( $this->config_vars['pms'] ); @@ -1433,9 +1477,12 @@ public function get_pm($pm_id, $set_as_read = true){ $this->error( $this->config_vars['no_pm'] ); } + if ($set_as_read) $this->set_as_read_pm($pm_id); + return $query->result(); } + //tested /** * Delete Private Message * Delete private message by id @@ -1447,6 +1494,7 @@ public function delete_pm($pm_id){ return $this->CI->db->delete( $this->config_vars['pms'], array('id' => $pm_id) ); } + //tested /** * Count unread Private Message * Count number of unread private messages @@ -1459,13 +1507,14 @@ public function count_unread_pms($receiver_id=false){ $receiver_id = $this->CI->session->userdata('id'); } - $query = $this->CI->db->where('reciever_id', $receiver_id); + $query = $this->CI->db->where('receiver_id', $receiver_id); $query = $this->CI->db->where('read', 0); $query = $this->CI->db->get( $this->config_vars['pms'] ); return $query->num_rows(); } + //tested /** * Set Private Message as read * Set private message as read @@ -1484,6 +1533,7 @@ public function set_as_read_pm($pm_id){ # Error / Info Functions ######################## + //tested /** * Error * Add message to error array and set flash data @@ -1495,6 +1545,7 @@ public function error($message){ $this->CI->session->set_flashdata('errors', $this->errors); } + //not working /** * Keep Errors * keeps the flash data flash data @@ -1503,9 +1554,10 @@ public function error($message){ * http://ellislab.com/codeigniter/user-guide/libraries/sessions.html */ public function keep_errors(){ - $this->session->keep_flashdata('errors'); + $this->CI->session->keep_flashdata('errors'); } + //tested /** * Get Errors Array * Return array of errors @@ -1520,6 +1572,7 @@ public function get_errors_array(){ } } + //tested /** * Print Errors * Prints string of errors separated by delimiter @@ -1541,6 +1594,7 @@ public function print_errors($divider = '
'){ echo $msg; } + //tested /** * Info * Add message to info array and set flash data @@ -1552,6 +1606,7 @@ public function info($message){ $this->CI->session->set_flashdata('infos', $this->errors); } + //not working /** * Keep Infos * keeps the flash data @@ -1563,6 +1618,7 @@ public function keep_infos(){ $this->session->keep_flashdata('infos'); } + //tested /** * Get Info Array * Return array of info @@ -1577,6 +1633,7 @@ public function get_infos_array(){ } } + //tested /** * Print Info * Print string of info separated by delimiter @@ -1603,6 +1660,7 @@ public function print_infos($divider = '
'){ # User Variables ######################## + //tested /** * Set User Variable as key value * if variable not set before, it will ve set @@ -1618,6 +1676,11 @@ public function set_user_var( $key, $value, $user_id = false ) { $user_id = $this->CI->session->userdata('id'); } + // if specified user is not found + if ( ! $this->get_user($user_id)){ + return false; + } + // if var not set, set if ( ! $this->get_user_var($key,$user_id) ) { @@ -1627,7 +1690,7 @@ public function set_user_var( $key, $value, $user_id = false ) { 'user_id' => $user_id ); - return $this->db->insert( $this->config_vars['user_variables'] , $data); + return $this->CI->db->insert( $this->config_vars['user_variables'] , $data); } // if var already set, overwrite @@ -1639,14 +1702,14 @@ public function set_user_var( $key, $value, $user_id = false ) { 'user_id' => $user_id ); - $this->db->where( 'key', $key ); - $this->db->where( 'user_id', $user_id); + $this->CI->db->where( 'key', $key ); + $this->CI->db->where( 'user_id', $user_id); - return $this->db->update( $this->config_vars['user_variables'], $data); + return $this->CI->db->update( $this->config_vars['user_variables'], $data); } } - + //tested /** * Unset User Variable as key value * @param string $key @@ -1659,14 +1722,19 @@ public function unset_user_var( $key, $user_id = false ) { $user_id = $this->CI->session->userdata('id'); } - $this->db->where('key', $key); - $this->db->where('user_id', $user_id); + // if specified user is not found + if ( ! $this->get_user($user_id)){ + return false; + } + + $this->CI->db->where('key', $key); + $this->CI->db->where('user_id', $user_id); - return $this->db->delete( $this->config_vars['user_variables'] ); + return $this->CI->db->delete( $this->config_vars['user_variables'] ); } - + //tested /** * Get User Variable by key * Return string of variable value or false @@ -1680,6 +1748,11 @@ public function get_user_var( $key, $user_id = false){ $user_id = $this->CI->session->userdata('id'); } + // if specified user is not found + if ( ! $this->get_user($user_id)){ + return false; + } + $query = $this->CI->db->where('user_id', $user_id); $query = $this->CI->db->where('key', $key); @@ -1700,6 +1773,7 @@ public function get_user_var( $key, $user_id = false){ # Aauth System Variables ######################## + //tested /** * Set Aauth System Variable as key value * if variable not set before, it will be set @@ -1708,17 +1782,17 @@ public function get_user_var( $key, $user_id = false){ * @param string $value * @return bool */ - public function set_aauth_var( $key, $value ) { + public function set_system_var( $key, $value ) { // if var not set, set - if ( ! $this->get_aauth_var($key) ) { + if ( ! $this->get_system_var($key) ) { $data = array( 'key' => $key, 'value' => $value, ); - return $this->db->insert( $this->config_vars['aauth_variables'] , $data); + return $this->CI->db->insert( $this->config_vars['system_variables'] , $data); } // if var already set, overwrite @@ -1729,35 +1803,37 @@ public function set_aauth_var( $key, $value ) { 'value' => $value, ); - $this->db->where( 'key', $key ); - return $this->db->update( $this->config_vars['aauth_variables'], $data); + $this->CI->db->where( 'key', $key ); + return $this->CI->db->update( $this->config_vars['system_variables'], $data); } } + //tested /** * Unset Aauth System Variable as key value * @param string $key * @return bool */ - public function unset_aauth_var( $key ) { + public function unset_system_var( $key ) { - $this->db->where('key', $key); + $this->CI->db->where('key', $key); - return $this->db->delete( $this->config_vars['aauth_variables'] ); + return $this->CI->db->delete( $this->config_vars['system_variables'] ); } + //tested /** * Get Aauth System Variable by key * Return string of variable value or false * @param string $key * @return bool|string , false if var is not set, the value of var if set */ - public function get_aauth_var( $key ){ + public function get_system_var( $key ){ $query = $this->CI->db->where('key', $key); - $query = $this->CI->db->get( $this->config_vars['aauth_variables'] ); + $query = $this->CI->db->get( $this->config_vars['system_variables'] ); // if variable not set if ($query->num_rows() < 1) { return false;} @@ -1779,7 +1855,11 @@ public function get_aauth_var( $key ){ * parametre olarak array alma * stacoverflow * public id sini 0 a eşitleyip öyle kontrol yapabilirdik (oni boşver uşağum) - * + * lock_user (until parametrsi) + * unlock_user + * send_pm() in errounda receiver ve sender için ayrı errorlar olabilür + * ddos protect olayını daha mantıklı hale getür + * geçici ban ve e-mail ile tkrar aktifleştime olayı */ /** @@ -1797,11 +1877,9 @@ public function get_aauth_var( $key ){ * tamam // sistem variables * tmam // user perms * tamam gibi // 4mysql index fulltext index?? - * geçici ban ve e-mail ile tkrar aktifleştime olayı - * ddos protect olayını daha mantıklı hale getür + * tamam //delete_user dan sonra grup ve perms ler de silinmeli + * login() içinde login'i doğru şekilde olsa da yine de login attempt artıyo kesin düzeltilecek * - * lock_user (until parametrsi) - * unlock_user * * * ----------- @@ -1821,8 +1899,10 @@ public function get_aauth_var( $key ){ * User and Aauth System Variables. set_user_var( $key, $value, $user_id = false ) get_user_var( $key, $user_id = false) -set_aauth_var( $key, $value, $user_id = false ) -get_aauth_var( $key, $user_id = false) +unset +set_system_var( $key, $value, $user_id = false ) +get_system_var( $key, $user_id = false) +unset functions added * *