-
-
Notifications
You must be signed in to change notification settings - Fork 957
/
User.php
116 lines (92 loc) · 2.51 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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<?php namespace Admin\Classes;
use Igniter\Flame\Auth\Manager;
/**
* Admin User authentication manager
* @package Admin
*/
class User extends Manager
{
protected $sessionKey = 'admin_info';
protected $model = 'Admin\Models\Users_model';
protected $groupModel = 'Admin\Models\Staff_groups_model';
protected $identifier = 'username';
protected $isSuperUser = FALSE;
public function isLogged()
{
return $this->check();
}
public function isSuperUser()
{
return $this->user()->isSuperUser();
}
public function getId()
{
return $this->fromModel('user_id', 'user');
}
public function getUserName()
{
return $this->fromModel('username', 'user');
}
public function getStaffId()
{
return $this->fromModel('staff_id', 'user');
}
public function getStaffName()
{
return $this->fromModel('staff_name', 'staff');
}
public function getStaffEmail()
{
return $this->fromModel('staff_email', 'staff');
}
public function getLocationId()
{
return $this->fromModel('staff_location_id', 'staff', params('default_location_id'));
}
public function getLocationName()
{
return $this->fromModel('location_name', 'location');
}
public function staffGroupName()
{
return $this->fromModel('staff_group_name', 'group');
}
public function location()
{
return $this->staff()->location;
}
public function staffGroup()
{
return $this->user()->staff->group;
}
public function staff()
{
return $this->user()->staff;
}
public function getStaffGroupId()
{
return $this->fromModel('staff_group_id', 'staff');
}
public function canAccessCustomerAccount()
{
return $this->isSuperUser() OR $this->fromModel('customer_account_access', 'group');
}
public function isStrictLocation()
{
return (is_single_location() OR $this->user()->hasStrictLocationAccess());
}
protected function fromModel($key, $related = null, $default = null)
{
$user = $this->user();
switch ($related) {
case 'staff':
return $user->staff[$key] ?? $default;
case 'group':
return $user->staff->group[$key] ?? $default;
case 'location':
return $user->staff->location[$key] ?? $default;
default:
return $user[$key] ?? $default;
}
}
}