-
Notifications
You must be signed in to change notification settings - Fork 0
/
login.php
71 lines (64 loc) · 1.62 KB
/
login.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
<?php
include 'include/init.php';
$rsp = array(
'ok' => 0,
'error' => 'Hmm. Something strange and unexpected happened.'
);
if (! empty($_SESSION['usr_id'])) {
$rsp = usr_get_by_id($_SESSION['usr_id']);
if (! $rsp['ok']) {
return $rsp;
}
$usr = $rsp['usr'];
$rsp = array(
'ok' => 1,
'usr_name' => $usr->name
);
} else if (empty($_SESSION['login_code'])) {
$rsp = usr_create_login();
if (! empty($rsp['ok'])) {
$_SESSION['login_code'] = $rsp['login_code'];
}
} else {
$ttl_cutoff = time() - USR_LOGIN_TTL;
$login = usr_get_login($_SESSION['login_code']);
if (empty($login)) {
// Session is invalid?
$rsp = usr_create_login();
if (! empty($rsp['ok'])) {
$_SESSION['login_code'] = $rsp['login_code'];
}
} else if (strtotime($login->created) < $ttl_cutoff) {
// Expired, try again
usr_delete_login($login->login_code);
$rsp = usr_create_login();
if (! empty($rsp['ok'])) {
$_SESSION['login_code'] = $rsp['login_code'];
}
} else if (! empty($login->usr_id)) {
// Hey, we are logged in!
$rsp = usr_get_by_id($login->usr_id);
if (! $rsp['ok']) {
return $rsp;
}
$usr = $rsp['usr'];
$_SESSION['usr_id'] = $login->usr_id;
$_SESSION['login_code'] = null;
usr_delete_login($login->login_code);
usr_set_status($usr->name, 'chat');
$rsp = array(
'ok' => 1,
'usr_name' => $usr->name
);
} else {
// Ok, it still works, but we're still waiting.
$rsp = array(
'ok' => 1,
'login_code' => $_SESSION['login_code']
);
}
}
$rsp['phone'] = $phone_number;
$rsp['phone_normalized'] = util_normalize_phone($phone_number);
header('Content-Type: application/json');
echo json_encode($rsp);