Add more subscribers
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
namespace Auth;
|
||||
|
||||
use Model\User;
|
||||
use Core\Request;
|
||||
use Event\AuthEvent;
|
||||
|
||||
/**
|
||||
* Database authentication
|
||||
@@ -33,18 +33,8 @@ class Database extends Base
|
||||
$user = $this->db->table(User::TABLE)->eq('username', $username)->eq('is_ldap_user', 0)->findOne();
|
||||
|
||||
if ($user && password_verify($password, $user['password'])) {
|
||||
|
||||
// Update user session
|
||||
$this->user->updateSession($user);
|
||||
|
||||
// Update login history
|
||||
$this->lastLogin->create(
|
||||
self::AUTH_NAME,
|
||||
$user['id'],
|
||||
Request::getIpAddress(),
|
||||
Request::getUserAgent()
|
||||
);
|
||||
|
||||
$this->container['dispatcher']->dispatch('auth.success', new AuthEvent(self::AUTH_NAME, $user['id']));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
namespace Auth;
|
||||
|
||||
use Core\Request;
|
||||
use Event\AuthEvent;
|
||||
use OAuth\Common\Storage\Session;
|
||||
use OAuth\Common\Consumer\Credentials;
|
||||
use OAuth\Common\Http\Uri\UriFactory;
|
||||
@@ -35,18 +35,8 @@ class GitHub extends Base
|
||||
$user = $this->user->getByGitHubId($github_id);
|
||||
|
||||
if ($user) {
|
||||
|
||||
// Create the user session
|
||||
$this->user->updateSession($user);
|
||||
|
||||
// Update login history
|
||||
$this->lastLogin->create(
|
||||
self::AUTH_NAME,
|
||||
$user['id'],
|
||||
Request::getIpAddress(),
|
||||
Request::getUserAgent()
|
||||
);
|
||||
|
||||
$this->container['dispatcher']->dispatch('auth.success', new AuthEvent(self::AUTH_NAME, $user['id']));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
namespace Auth;
|
||||
|
||||
use Core\Request;
|
||||
use Event\AuthEvent;
|
||||
use OAuth\Common\Storage\Session;
|
||||
use OAuth\Common\Consumer\Credentials;
|
||||
use OAuth\Common\Http\Uri\UriFactory;
|
||||
@@ -36,18 +36,8 @@ class Google extends Base
|
||||
$user = $this->user->getByGoogleId($google_id);
|
||||
|
||||
if ($user) {
|
||||
|
||||
// Create the user session
|
||||
$this->user->updateSession($user);
|
||||
|
||||
// Update login history
|
||||
$this->lastLogin->create(
|
||||
self::AUTH_NAME,
|
||||
$user['id'],
|
||||
Request::getIpAddress(),
|
||||
Request::getUserAgent()
|
||||
);
|
||||
|
||||
$this->container['dispatcher']->dispatch('auth.success', new AuthEvent(self::AUTH_NAME, $user['id']));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
namespace Auth;
|
||||
|
||||
use Core\Request;
|
||||
use Event\AuthEvent;
|
||||
|
||||
/**
|
||||
* LDAP model
|
||||
@@ -55,14 +55,7 @@ class Ldap extends Base
|
||||
|
||||
// We open the session
|
||||
$this->user->updateSession($user);
|
||||
|
||||
// Update login history
|
||||
$this->lastLogin->create(
|
||||
self::AUTH_NAME,
|
||||
$user['id'],
|
||||
Request::getIpAddress(),
|
||||
Request::getUserAgent()
|
||||
);
|
||||
$this->container['dispatcher']->dispatch('auth.success', new AuthEvent(self::AUTH_NAME, $user['id']));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
namespace Auth;
|
||||
|
||||
use Core\Request;
|
||||
use Event\AuthEvent;
|
||||
use Core\Security;
|
||||
|
||||
/**
|
||||
@@ -103,12 +104,9 @@ class RememberMe extends Base
|
||||
$this->user->updateSession($this->user->getById($record['user_id']));
|
||||
$this->acl->isRememberMe(true);
|
||||
|
||||
// Update last login infos
|
||||
$this->lastLogin->create(
|
||||
self::AUTH_NAME,
|
||||
$this->acl->getUserId(),
|
||||
Request::getIpAddress(),
|
||||
Request::getUserAgent()
|
||||
$this->container['dispatcher']->dispatch(
|
||||
'auth.success',
|
||||
new AuthEvent(self::AUTH_NAME, $this->acl->getUserId())
|
||||
);
|
||||
|
||||
return true;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
namespace Auth;
|
||||
|
||||
use Core\Request;
|
||||
use Event\AuthEvent;
|
||||
|
||||
/**
|
||||
* ReverseProxy backend
|
||||
@@ -37,16 +37,8 @@ class ReverseProxy extends Base
|
||||
$user = $this->user->getByUsername($login);
|
||||
}
|
||||
|
||||
// Create the user session
|
||||
$this->user->updateSession($user);
|
||||
|
||||
// Update login history
|
||||
$this->lastLogin->create(
|
||||
self::AUTH_NAME,
|
||||
$user['id'],
|
||||
Request::getIpAddress(),
|
||||
Request::getUserAgent()
|
||||
);
|
||||
$this->container['dispatcher']->dispatch('auth.success', new AuthEvent(self::AUTH_NAME, $user['id']));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ use Core\Response;
|
||||
use Core\Template;
|
||||
use Core\Session;
|
||||
use Model\LastLogin;
|
||||
use Symfony\Component\EventDispatcher\Event;
|
||||
|
||||
/**
|
||||
* Base controller
|
||||
@@ -140,6 +141,7 @@ abstract class Base
|
||||
{
|
||||
// Start the session
|
||||
$this->session->open(BASE_URL_DIRECTORY);
|
||||
$this->container['dispatcher']->dispatch('session.bootstrap', new Event);
|
||||
|
||||
// HTTP secure headers
|
||||
$this->response->csp(array('style-src' => "'self' 'unsafe-inline'"));
|
||||
|
||||
27
app/Event/AuthEvent.php
Normal file
27
app/Event/AuthEvent.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace Event;
|
||||
|
||||
use Symfony\Component\EventDispatcher\Event as BaseEvent;
|
||||
|
||||
class AuthEvent extends BaseEvent
|
||||
{
|
||||
private $auth_name;
|
||||
private $user_id;
|
||||
|
||||
public function __construct($auth_name, $user_id)
|
||||
{
|
||||
$this->auth_name = $auth_name;
|
||||
$this->user_id = $user_id;
|
||||
}
|
||||
|
||||
public function getUserId()
|
||||
{
|
||||
return $this->user_id;
|
||||
}
|
||||
|
||||
public function getAuthType()
|
||||
{
|
||||
return $this->auth_name;
|
||||
}
|
||||
}
|
||||
@@ -4,18 +4,22 @@ namespace ServiceProvider;
|
||||
|
||||
use Pimple\Container;
|
||||
use Pimple\ServiceProviderInterface;
|
||||
use Symfony\Component\EventDispatcher\EventDispatcher;
|
||||
use Subscriber\AuthSubscriber;
|
||||
use Subscriber\BootstrapSubscriber;
|
||||
use Subscriber\NotificationSubscriber;
|
||||
use Subscriber\ProjectActivitySubscriber;
|
||||
use Subscriber\ProjectDailySummarySubscriber;
|
||||
use Subscriber\ProjectModificationDateSubscriber;
|
||||
use Subscriber\WebhookSubscriber;
|
||||
use Symfony\Component\EventDispatcher\EventDispatcher;
|
||||
|
||||
class EventDispatcherProvider implements ServiceProviderInterface
|
||||
{
|
||||
public function register(Container $container)
|
||||
{
|
||||
$container['dispatcher'] = new EventDispatcher;
|
||||
$container['dispatcher']->addSubscriber(new BootstrapSubscriber($container));
|
||||
$container['dispatcher']->addSubscriber(new AuthSubscriber($container));
|
||||
$container['dispatcher']->addSubscriber(new ProjectActivitySubscriber($container));
|
||||
$container['dispatcher']->addSubscriber(new ProjectDailySummarySubscriber($container));
|
||||
$container['dispatcher']->addSubscriber(new ProjectModificationDateSubscriber($container));
|
||||
|
||||
27
app/Subscriber/AuthSubscriber.php
Normal file
27
app/Subscriber/AuthSubscriber.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace Subscriber;
|
||||
|
||||
use Core\Request;
|
||||
use Event\AuthEvent;
|
||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||
|
||||
class AuthSubscriber extends Base implements EventSubscriberInterface
|
||||
{
|
||||
public static function getSubscribedEvents()
|
||||
{
|
||||
return array(
|
||||
'auth.success' => array('onSuccess', 0),
|
||||
);
|
||||
}
|
||||
|
||||
public function onSuccess(AuthEvent $event)
|
||||
{
|
||||
$this->lastLogin->create(
|
||||
$event->getAuthType(),
|
||||
$event->getUserId(),
|
||||
Request::getIpAddress(),
|
||||
Request::getUserAgent()
|
||||
);
|
||||
}
|
||||
}
|
||||
22
app/Subscriber/BootstrapSubscriber.php
Normal file
22
app/Subscriber/BootstrapSubscriber.php
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
namespace Subscriber;
|
||||
|
||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||
|
||||
class BootstrapSubscriber extends Base implements EventSubscriberInterface
|
||||
{
|
||||
public static function getSubscribedEvents()
|
||||
{
|
||||
return array(
|
||||
'session.bootstrap' => array('setup', 0),
|
||||
'api.bootstrap' => array('setup', 0),
|
||||
);
|
||||
}
|
||||
|
||||
public function setup()
|
||||
{
|
||||
$this->container['config']->setupTranslations();
|
||||
$this->container['config']->setupTimezone();
|
||||
}
|
||||
}
|
||||
@@ -15,6 +15,3 @@ $container->register(new ServiceProvider\DatabaseProvider);
|
||||
$container->register(new ServiceProvider\ModelProvider);
|
||||
$container->register(new ServiceProvider\EventDispatcherProvider);
|
||||
$container->register(new ServiceProvider\MailerProvider);
|
||||
|
||||
$container['config']->setupTranslations();
|
||||
$container['config']->setupTimezone();
|
||||
|
||||
Reference in New Issue
Block a user