-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathuser.php
85 lines (79 loc) · 2.3 KB
/
user.php
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
<?php
class User
{
private $hg;
public function __construct()
{
ini_set('session.gc_maxlifetime', 5);
session_start();
$this->hg = new \Homegear\Homegear();
}
public function checkAuth($redirectToLogin)
{
$authorized = false;
try
{
$keysSet = isset($_COOKIE['accessKey']) && isset($_COOKIE['refreshKey']);
if($keysSet)
{
$username = $this->hg->verifyOauthKey($_COOKIE['accessKey']);
if(!$username)
{
$keys = $this->hg->refreshOauthKey($_COOKIE['refreshKey']);
setcookie("accessKey", $keys['access_token']);
setcookie("refreshKey", $keys['refresh_token']);
$username = $keys['user'];
}
if($username)
{
$_SESSION['authorized'] = true;
$_SESSION['user'] = $username;
$authorized = true;
}
}
}
catch(\Homegear\HomegearException $e)
{
$authorized = false;
}
if(!$authorized)
{
$this->logout();
if($redirectToLogin) header("Location: signin.php?url=".$_SERVER["REQUEST_URI"]);
die("unauthorized");
}
return $authorized;
}
public function login($username, $password)
{
try
{
if(hg_auth($username, $password) === true)
{
$keys = $this->hg->createOauthKeys($username);
setcookie("accessKey", $keys['access_token']);
setcookie("refreshKey", $keys['refresh_token']);
$_SESSION['authorized'] = true;
$_SESSION["user"] = $username;
return true;
}
}
catch(\Homegear\HomegearException $e)
{
}
return false;
}
public function logout()
{
if(ini_get("session.use_cookies"))
{
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}
session_destroy();
}
}
?>