| 1 | <?php |
|---|
| 2 | |
|---|
| 3 | require_once(IA_ROOT_DIR."common/db/user.php"); |
|---|
| 4 | |
|---|
| 5 | // Password hash function. Must be compatible with SMF. |
|---|
| 6 | // |
|---|
| 7 | // Also takes into account user name so that users |
|---|
| 8 | // sharing the same password can't be detected |
|---|
| 9 | function user_hash_password($password, $username) { |
|---|
| 10 | return sha1(strtolower($username).$password); |
|---|
| 11 | } |
|---|
| 12 | |
|---|
| 13 | // Computes user unsubscribe key. User must supply this exact key in order |
|---|
| 14 | // to unsubscribe from the mailing list. |
|---|
| 15 | // $user is user object as returned by user_get_by_username(...) |
|---|
| 16 | function user_unsubscribe_key($user) { |
|---|
| 17 | $key = sha1('u:'.$user['username'].':'.$user['password'].':'.IA_SECRET); |
|---|
| 18 | |
|---|
| 19 | // trim key. make it shorter since long URLs suck in text/plain emails |
|---|
| 20 | return substr($key, 0, 16); |
|---|
| 21 | } |
|---|
| 22 | |
|---|
| 23 | // Computes reset password confirmation key. |
|---|
| 24 | // User must supply this in order to reset their password. |
|---|
| 25 | // $user is user object as returned by user_get_by_username(...) |
|---|
| 26 | function user_resetpass_key($user) { |
|---|
| 27 | $key = sha1('r:'.$user['username'].':'.$user['password'].':'.IA_SECRET); |
|---|
| 28 | |
|---|
| 29 | // trim key. make it shorter since long URLs suck in text/plain emails |
|---|
| 30 | return substr($key, 0, 16); |
|---|
| 31 | } |
|---|
| 32 | |
|---|
| 33 | // Initialize an user struct |
|---|
| 34 | function user_init() |
|---|
| 35 | { |
|---|
| 36 | $user = array(); |
|---|
| 37 | $user['security_level'] = 'normal'; |
|---|
| 38 | $user['rating_cache'] = null; |
|---|
| 39 | $user['id'] = -1; |
|---|
| 40 | $user['newsletter'] = 1; |
|---|
| 41 | |
|---|
| 42 | return $user; |
|---|
| 43 | } |
|---|
| 44 | |
|---|
| 45 | // Validate an user struct. |
|---|
| 46 | function user_validate($user) { |
|---|
| 47 | $errors = array(); |
|---|
| 48 | |
|---|
| 49 | log_assert(is_array($user), "You didn't even pass an array."); |
|---|
| 50 | |
|---|
| 51 | // User id. |
|---|
| 52 | if (!array_key_exists('id', $user)) { |
|---|
| 53 | $errors['id'] = "Lipseste identificatorul de utilizator"; |
|---|
| 54 | } else if (!is_user_id($user['id'])) { |
|---|
| 55 | $errors['id'] = "Identficator de utilizator invalid"; |
|---|
| 56 | } |
|---|
| 57 | |
|---|
| 58 | // Username |
|---|
| 59 | if (!array_key_exists('username', $user)) { |
|---|
| 60 | $errors['username'] = 'Lipseste numele de utilizator.'; |
|---|
| 61 | } else if (2 > strlen($user['username'])) { |
|---|
| 62 | $errors['username'] = 'Nume de utilizator este prea scurt.'; |
|---|
| 63 | } else if (60 < strlen($user['username'])) { |
|---|
| 64 | $errors['username'] = 'Nume de utilizator este prea lung.'; |
|---|
| 65 | // } else if (!is_user_name($user['username'])) { |
|---|
| 66 | // $errors['username'] = 'Numele utilizator contine caractere invalide.'; |
|---|
| 67 | } |
|---|
| 68 | |
|---|
| 69 | // Password |
|---|
| 70 | if (!array_key_exists('password', $user)) { |
|---|
| 71 | $errors['password'] = 'Lipseste parola'; |
|---|
| 72 | } |
|---|
| 73 | |
|---|
| 74 | // E-mail |
|---|
| 75 | if (!array_key_exists('email', $user)) { |
|---|
| 76 | $errors['email'] = 'Lipseste adresa de e-mail.'; |
|---|
| 77 | // } else if (!is_valid_email($user['email'])) { |
|---|
| 78 | // $errors['email'] = 'Adresa de e-mail introdusa este invalida.'; |
|---|
| 79 | } |
|---|
| 80 | |
|---|
| 81 | // Full name |
|---|
| 82 | if (!array_key_exists('full_name', $user)) { |
|---|
| 83 | $errors['full_name'] = 'Lipseste numele complet.'; |
|---|
| 84 | } else if (strlen($user['full_name']) < 1) { |
|---|
| 85 | $errors['full_name'] = 'Numele este prea scurt'; |
|---|
| 86 | // } else if (!is_user_full_name($user['full_name'])) { |
|---|
| 87 | // $errors['full_name'] = 'Numele contine caractere invalide.'; |
|---|
| 88 | } |
|---|
| 89 | |
|---|
| 90 | // Security level |
|---|
| 91 | if (!array_key_exists('security_level', $user)) { |
|---|
| 92 | $errors['security_level'] = "Lipseste nivelul de securitate"; |
|---|
| 93 | } else if ($user['security_level'] != 'normal' && |
|---|
| 94 | $user['security_level'] != 'helper' && |
|---|
| 95 | $user['security_level'] != 'admin' && |
|---|
| 96 | $user['security_level'] != 'intern') { |
|---|
| 97 | $errors['security_level'] = "Nivel de securitate invalid"; |
|---|
| 98 | } |
|---|
| 99 | |
|---|
| 100 | // Newsletter |
|---|
| 101 | if (!array_key_exists('newsletter', $user)) { |
|---|
| 102 | $errors['newsletter'] = "Lipseste bitul de newsletter"; |
|---|
| 103 | } else if ($user['newsletter'] != '0' && $user['newsletter'] != '1') { |
|---|
| 104 | $errors['newsletter'] = "Se accepta doar 0/1"; |
|---|
| 105 | } |
|---|
| 106 | |
|---|
| 107 | return $errors; |
|---|
| 108 | } |
|---|
| 109 | |
|---|
| 110 | function user_is_admin($user) { |
|---|
| 111 | if (!$user) { |
|---|
| 112 | return false; |
|---|
| 113 | } |
|---|
| 114 | log_assert_valid(user_validate($user)); |
|---|
| 115 | return $user['security_level'] === 'admin'; |
|---|
| 116 | } |
|---|
| 117 | |
|---|
| 118 | ?> |
|---|