MAPG-69 add active flag for users and check if user is active before login
This commit is contained in:
parent
28ed02091a
commit
66b21ec710
17
database/migrations/data/20200614_1328_user_confirmation.php
Normal file
17
database/migrations/data/20200614_1328_user_confirmation.php
Normal file
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
use MapGuesser\Database\Query\Modify;
|
||||
use MapGuesser\Database\Query\Select;
|
||||
use MapGuesser\Interfaces\Database\IResultSet;
|
||||
|
||||
$select = new Select(\Container::$dbConnection, 'users');
|
||||
$select->columns(['id']);
|
||||
|
||||
$result = $select->execute();
|
||||
|
||||
while ($map = $result->fetch(IResultSet::FETCH_ASSOC)) {
|
||||
$modify = new Modify(\Container::$dbConnection, 'users');
|
||||
$modify->setId($map['id']);
|
||||
$modify->set('active', true);
|
||||
$modify->save();
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
CREATE TABLE `user_confirmations` (
|
||||
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`user_id` int(10) unsigned NOT NULL,
|
||||
`token` varchar(64) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `user_id` (`user_id`),
|
||||
KEY `token` (`token`),
|
||||
CONSTRAINT `user_confirmations_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
|
||||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
|
||||
|
||||
ALTER TABLE
|
||||
`users`
|
||||
ADD
|
||||
`active` tinyint(1) NOT NULL DEFAULT 0;
|
@ -13,7 +13,10 @@
|
||||
var errorText;
|
||||
switch (this.response.error) {
|
||||
case 'user_not_found':
|
||||
errorText = 'No user found with the given email address.';
|
||||
errorText = 'No user found with the given email address. You can <a href="/signup" title="Sign up">sign up here</a>!';
|
||||
break;
|
||||
case 'user_not_active':
|
||||
errorText = 'User found with the given email address, but the account is not activated. Please check your email and click on the activation link!';
|
||||
break;
|
||||
case 'password_not_match':
|
||||
errorText = 'The given password is wrong.'
|
||||
|
@ -53,6 +53,11 @@ class LoginController
|
||||
|
||||
$user = new User($userData);
|
||||
|
||||
if (!$user->getActive()) {
|
||||
$data = ['error' => 'user_not_active'];
|
||||
return new JsonContent($data);
|
||||
}
|
||||
|
||||
if (!$user->checkPassword($this->request->post('password'))) {
|
||||
$data = ['error' => 'password_not_match'];
|
||||
return new JsonContent($data);
|
||||
@ -68,6 +73,6 @@ class LoginController
|
||||
{
|
||||
$this->request->session()->delete('user');
|
||||
|
||||
return new Redirect([\Container::$routeCollection->getRoute('login'), []], IRedirect::TEMPORARY);
|
||||
return new Redirect([\Container::$routeCollection->getRoute('index'), []], IRedirect::TEMPORARY);
|
||||
}
|
||||
}
|
||||
|
@ -11,7 +11,7 @@ $jsFiles = [
|
||||
<form id="loginForm" action="/login" method="post">
|
||||
<input class="big fullWidth" type="email" name="email" placeholder="Email address" autofocus>
|
||||
<input class="big fullWidth marginTop" type="password" name="password" placeholder="Password">
|
||||
<p id="loginFormError" class="formError marginTop"></p>
|
||||
<p id="loginFormError" class="formError justify marginTop"></p>
|
||||
<div class="right marginTop">
|
||||
<button type="submit">Login</button>
|
||||
</div>
|
||||
|
Loading…
Reference in New Issue
Block a user