Repository navigation
Expand file tree
/
Copy pathUser.php
More file actions
106 lines (90 loc) · 3.64 KB
/
Copy pathUser.php
File metadata and controls
106 lines (90 loc) · 3.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<?php
require_once("model/DBInit.php");
class User {
public static function getUserByCredential($credential) {
$db = DBInit::getInstance();
$stmt = $db->prepare("SELECT * FROM users WHERE username = :credential OR email = :credential LIMIT 1");
$stmt->execute(array(":credential" => $credential));
return $stmt->fetch();
}
public static function getUserByUsername($username) {
$db = DBInit::getInstance();
$stmt = $db->prepare("SELECT * FROM users WHERE username = :username LIMIT 1");
$stmt->execute(array(":username" => $username));
return $stmt->fetch();
}
public static function getUserByEmail($email) {
$db = DBInit::getInstance();
$stmt = $db->prepare("SELECT * FROM users WHERE email = :email LIMIT 1");
$stmt->execute(array(":email" => $email));
return $stmt->fetch();
}
public static function getUserById($id) {
$db = DBInit::getInstance();
$stmt = $db->prepare("SELECT * FROM users WHERE id = :id");
$stmt->execute(array(":id" => $id));
return $stmt->fetch();
}
public static function createUser($username, $email, $password) {
$db = DBInit::getInstance();
$stmt = $db->prepare("INSERT INTO users (username, email, password) VALUES (:username, :email, :password)");
$stmt->execute(array(
":username" => $username,
":email" => $email,
":password" => password_hash($password, PASSWORD_DEFAULT)
));
$id = $db->lastInsertId();
return self::getUserById($id);
}
public static function deleteUser($id) {
$db = DBInit::getInstance();
$stmt = $db->prepare("DELETE FROM users WHERE id = :id");
$stmt->execute(array(":id" => $id));
}
public static function updateUser($id, $username, $email, $password) {
$db = DBInit::getInstance();
$stmt = $db->prepare("UPDATE users SET username = :username, email = :email, password = :password WHERE id = :id");
$stmt->execute(array(
":username" => $username,
":email" => $email,
":password" => password_hash($password, PASSWORD_DEFAULT),
":id" => $id
));
}
public static function updateUserProfile($id, $username, $email) {
$db = DBInit::getInstance();
$stmt = $db->prepare("UPDATE users SET username = :username, email = :email WHERE id = :id");
return $stmt->execute(array(
":username" => $username,
":email" => $email,
":id" => $id
));
}
public static function updateUserPassword($id, $currentPassword, $newPassword, $confirmPassword) {
if ($newPassword !== $confirmPassword) {
return false;
}
$user = self::getUserById($id);
if (!$user || !password_verify($currentPassword, $user["password"])) {
return false;
}
$db = DBInit::getInstance();
$stmt = $db->prepare("UPDATE users SET password = :password WHERE id = :id");
return $stmt->execute(array(
":password" => password_hash($newPassword, PASSWORD_DEFAULT),
":id" => $id
));
}
public static function verifyUser($credential, $password) {
$user = self::getUserByCredential($credential);
if ($user && password_verify($password, $user["password"])) {
return $user;
}
return false;
}
public static function deleteUserById($id) {
$db = DBInit::getInstance();
$stmt = $db->prepare("DELETE FROM users WHERE id = :id");
return $stmt->execute(array(":id" => $id));
}
}