-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path_bundle.php
More file actions
executable file
·112 lines (89 loc) · 3.09 KB
/
_bundle.php
File metadata and controls
executable file
·112 lines (89 loc) · 3.09 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
107
108
109
110
111
112
<?php
namespace Bundles\Members;
use Bundles\SQL\SQLBundle;
use Bundles\SQL\NoMatchException as NoMatch;
use Exception;
use e;
class Bundle extends SQLBundle {
private $_currentMember = null;
public function _on_framework_loaded() {
e::configure('lhtml')->activeAddKey('hook', ':members', $this);
e::configure('lhtml')->activeAddKey('hook', ':member', function() { return e::$members->currentMember(); });
// Add manager
e::configure('manage')->activeAddKey('bundle', __NAMESPACE__, 'members');
}
public function currentMember() {
if(is_null($this->_currentMember)) {
try { $this->_currentMember = $this->getMember(e::$session->data->currentMember); }
catch(NoMatch $e) { $this->_currentMember = false; }
}
return $this->_currentMember;
}
public function login($email, $password, $options = array()) {
$return = e::$sql->query("SELECT * FROM `members.account` WHERE `email` = '$email' AND `password` = md5('$password');")->row();
/**
* If disclose-email is enabled, users will see more specific messages
* @author Nate Ferrero
*/
if(!$return && isset($options['disclose-email']) && $options['disclose-email']) {
$return = e::$sql->query("SELECT * FROM `members.account` WHERE `email` = '$email';")->row();
if(!$return)
return array('type' => 'error', 'message' => 'No account with that email address.');
/**
* Indicate that password setup can happen
* @author Nate Ferrero
*/
if($return['password'] === '' && isset($options['setup-password']) && $options['setup-password'])
return 'setup-password';
return array('type' => 'error', 'message' => 'You entered an invalid password.');
}
if($return) return e::$session->data->currentMember = $return['id'];
else return array('type' => 'error', 'message' => 'Email or Password was incorrect.');
}
public function register($email, $password) {
if($this->getByEmail($email))
return array('type' => 'error', 'messsage' => 'This email is already in use.');
try {
$member = e::$members->newMember();
$member->email = $email;
$member->password = md5($password);
$member->save();
$member->linkWebapp(e::$webapp->subdomainAccount());
}
catch(Exception $e) {
return array('error', $e->getMessage());
}
}
/**
* Let other bundles update a member's address.
*/
public function _on_memberUpdateAddress($member, $data) {
if(is_object($member))
$member->save($data);
}
public function getByEmail($email) {
$return = e::$sql->query("SELECT * FROM `members.account` WHERE `email` = '$email';")->row();
if($return) return $this->getMember($return);
else return false;
}
public function logout() {
if($this->currentMember())
e::$session->data->currentMember = null;
return true;
}
public function onNotAdminRedirect($to) {
$member = $this->currentMember();
if(!$member || $member->permission < 3)
e\redirect($to);
}
public function requireMemberRedirect($to) {
$member = $this->currentMember();
if(!$member)
e\redirect($to);
}
public function route() {
$currentMember = $this->currentMember();
dump($currentMember);
dump($currentMember->name());
}
}