авпавпрв пврар23
userModel = new UserModel();
$this->session = session();
$this->pageModel = new PageModel();
}
public function register()
{
if ($this->session->get('logged_in')) {
return redirect()->to('/dashboard');
}
$data = [
'title' => 'Регистрация',
'validation' => \Config\Services::validation(),
'footer_pages' => $this->pageModel->getFooterPages(),
];
return view('auth/register', $data);
}
public function processRegister()
{
$validation = \Config\Services::validation();
$rules = [
'username' => 'required|min_length[3]|max_length[100]|is_unique[users.username]',
'email' => 'required|valid_email|is_unique[users.email]',
'password' => 'required|min_length[6]',
'password_confirm' => 'required|matches[password]',
];
if ($this->validate($rules)) {
$userData = [
'username' => $this->request->getPost('username'),
'email' => $this->request->getPost('email'),
'password' => $this->request->getPost('password'),
'phone' => $this->request->getPost('phone'),
];
$this->userModel->insert($userData);
$this->session->setFlashdata('success', 'Регистрация успешна! Теперь вы можете войти.');
return redirect()->to('/auth/login');
}
return redirect()->back()->withInput()->with('validation', $validation);
}
public function login()
{
if ($this->session->get('logged_in')) {
return redirect()->to('/dashboard');
}
$data = [
'title' => 'Вход',
'validation' => \Config\Services::validation(),
'footer_pages' => $this->pageModel->getFooterPages(),
];
return view('auth/login', $data);
}
public function processLogin()
{
$email = $this->request->getPost('email');
$password = $this->request->getPost('password');
$user = $this->userModel->getUserByEmail($email);
if ($user && $this->userModel->verifyPassword($password, $user['password'])) {
if ($user['is_banned']) {
$this->session->setFlashdata('error', 'Ваш аккаунт заблокирован.');
return redirect()->back();
}
$sessionData = [
'user_id' => $user['id'],
'username' => $user['username'],
'email' => $user['email'],
'role' => $user['role'],
'logged_in' => true,
];
$this->session->set($sessionData);
// Перенаправляем в зависимости от роли
if ($user['role'] == 'admin') {
return redirect()->to('/admin');
}
return redirect()->to('/dashboard');
}
$this->session->setFlashdata('error', 'Неверный email или пароль.');
return redirect()->back();
}
public function logout()
{
$this->session->destroy();
return redirect()->to('/');
}
}