source: trunk/common/user.php @ 1184

Revision 1149, 3.8 KB checked in by savin.tiberiu@…, 11 months ago (diff)

Intern security level

  • Property svn:eol-style set to native
Line 
1<?php
2
3require_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
9function 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(...)
16function 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(...)
26function 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
34function 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.
46function 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
110function 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?>
Note: See TracBrowser for help on using the repository browser.