Add more subscribers
This commit is contained in:
parent
0a14c8d5e5
commit
88d84073ae
|
|
@ -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'"));
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -2,6 +2,10 @@
|
|||
|
||||
require __DIR__.'/app/common.php';
|
||||
|
||||
use Symfony\Component\EventDispatcher\Event;
|
||||
|
||||
$container['dispatcher']->dispatch('api.bootstrap', new Event);
|
||||
|
||||
$server = new JsonRPC\Server;
|
||||
$server->authentication(array('jsonrpc' => $container['config']->get('api_token')));
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue