Newer
Older

Yassine Doghri
committed
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
<?php
/**
* @copyright 2020 Podlibre
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
* @link https://castopod.org/
*/
namespace App\Controllers\Admin;
use Myth\Auth\Models\UserModel;
class User extends BaseController
{
protected ?\Myth\Auth\Entities\User $user;
public function _remap($method, ...$params)
{
if (count($params) > 0) {
$user_model = new UserModel();
if (
!($user = $user_model->where('username', $params[0])->first())
) {
throw \CodeIgniter\Exceptions\PageNotFoundException::forPageNotFound();
}
$this->user = $user;
}
return $this->$method();
}
public function list()
{
$user_model = new UserModel();
$data = ['all_users' => $user_model->findAll()];
return view('admin/user/list', $data);
}
public function create()
{
$user_model = new UserModel();
// Validate here first, since some things,
// like the password, can only be validated properly here.
$rules = array_merge(
$user_model->getValidationRules(['only' => ['username']]),
[
'email' => 'required|valid_email|is_unique[users.email]',
'password' => 'required|strong_password',
'pass_confirm' => 'required|matches[password]',
]
);
if (!$this->validate($rules)) {
echo view('admin/user/create');
} else {
// Save the user
$user = new \Myth\Auth\Entities\User($this->request->getPost());
// Activate user
$user->activate();
// Force user to reset his password on first connection
$user->force_pass_reset = true;
$user->generateResetHash();
if (!$user_model->save($user)) {
return redirect()
->back()
->withInput()
->with('errors', $user_model->errors());
}
// Success!
return redirect()
->route('user_list')
->with('message', lang('User.createSuccess'));
}
}
public function forcePassReset()
{
$user_model = new UserModel();
$this->user->force_pass_reset = true;
$this->user->generateResetHash();
if (!$user_model->save($this->user)) {
return redirect()
->back()
->with('errors', $user_model->errors());
}
// Success!
return redirect()
->route('user_list')
->with('message', lang('User.forcePassResetSuccess'));
}
public function ban()
{
$user_model = new UserModel();
$this->user->ban('');
if (!$user_model->save($this->user)) {
return redirect()
->back()
->with('errors', $user_model->errors());
}
return redirect()
->route('user_list')
->with('message', lang('User.banSuccess'));
}
public function unBan()
{
$user_model = new UserModel();
$this->user->unBan();
if (!$user_model->save($this->user)) {
return redirect()
->back()
->with('errors', $user_model->errors());
}
return redirect()
->route('user_list')
->with('message', lang('User.unbanSuccess'));
}
public function delete()
{
$user_model = new UserModel();
$user_model->delete($this->user->id);
return redirect()
->route('user_list')
->with('message', lang('User.deleteSuccess'));
}
}