You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

57 lines
1.4 KiB
PHP

<?php
/**
* Created by PhpStorm.
* User: eater
* Date: 4/2/16
* Time: 1:54 PM
*/
namespace Eater\Glim\Handler\Login;
use Eater\Glim\Handler\Main;
use Eater\Glim\Service\User;
class Action extends Main
{
public function handle()
{
$username = $this->post('username');
$password = $this->post('password');
/* @var User $user */
$user = $this->get('user');
/* @var \Aura\Session\Session $session */
$session = $this->get('session');
$segment = $session->getSegment('main');
$loggedUser = $user->login($username, $password);
if ($loggedUser === null) {
$segment->setFlash("message", "Login failed, username or password are incorrect");
$segment->setFlash('username', $username);
return $this->redirect('/login');
}
$email = $loggedUser->getEmailAddressRelatedByEmail();
if ($email !== null || !$email->isVerified()) {
$segment->setFlash("message", "Please verify your email before logging in");
$segment->setFlash('username', $username);
return $this->redirect('/login');
}
$segment->set('userId', $loggedUser->getId());
$afterLogin = $segment->get('afterLogin');
$segment->set('afterLogin', null);
if ($afterLogin !== null) {
return $this->redirect($afterLogin);
}
return $this->redirect('/panel');
}
}