mirror of
https://github.com/NNTmux/newznab-tmux.git
synced 2026-08-29 01:08:56 +00:00
Move certain user functions (api accessed and logged in) into specific events
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
2019-02-20 DariusIII
|
||||
* Chg: DO some small code simplification
|
||||
* Chg: Move certain user functions (api accessed and logged in) into specific events
|
||||
* Chg: Do some small code simplification
|
||||
* Chg: Add table to track failed jobs
|
||||
* Fix: Add missing import of ColorCLI class. Fixes issue #897
|
||||
* Chg: Update nette/neon (v2.4.3 => v3.0.0)
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace App\Events;
|
||||
|
||||
use Illuminate\Broadcasting\Channel;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Illuminate\Broadcasting\PrivateChannel;
|
||||
use Illuminate\Broadcasting\PresenceChannel;
|
||||
use Illuminate\Foundation\Events\Dispatchable;
|
||||
use Illuminate\Broadcasting\InteractsWithSockets;
|
||||
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
|
||||
|
||||
class UserAccessedApi
|
||||
{
|
||||
use Dispatchable, InteractsWithSockets, SerializesModels;
|
||||
|
||||
/**
|
||||
* @var \App\Models\User
|
||||
*/
|
||||
public $user;
|
||||
|
||||
/**
|
||||
* Create a new event instance.
|
||||
*
|
||||
* @param $user
|
||||
*/
|
||||
public function __construct($user)
|
||||
{
|
||||
$this->user = $user;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace App\Events;
|
||||
|
||||
use Illuminate\Broadcasting\Channel;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Illuminate\Broadcasting\PrivateChannel;
|
||||
use Illuminate\Broadcasting\PresenceChannel;
|
||||
use Illuminate\Foundation\Events\Dispatchable;
|
||||
use Illuminate\Broadcasting\InteractsWithSockets;
|
||||
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
|
||||
|
||||
class UserLoggedIn
|
||||
{
|
||||
use Dispatchable, InteractsWithSockets, SerializesModels;
|
||||
|
||||
/**
|
||||
* @var \App\Models\User
|
||||
*/
|
||||
public $user;
|
||||
|
||||
/**
|
||||
* @var
|
||||
*/
|
||||
public $ip;
|
||||
|
||||
/**
|
||||
* Create a new event instance.
|
||||
*
|
||||
* @param $user
|
||||
* @param $ip
|
||||
*/
|
||||
public function __construct($user, $ip)
|
||||
{
|
||||
$this->user = $user;
|
||||
$this->ip = $ip;
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\Events\UserAccessedApi;
|
||||
use App\Models\User;
|
||||
use App\Models\Release;
|
||||
use Blacklight\http\API;
|
||||
@@ -89,7 +90,7 @@ class ApiController extends BasePageController
|
||||
|
||||
// Record user access to the api, if its been called by a user (i.e. capabilities request do not require a user to be logged in or key provided).
|
||||
if ($uid !== '') {
|
||||
User::updateApiAccessed($uid);
|
||||
event(new UserAccessedApi($res));
|
||||
$apiRequests = UserRequest::getApiRequests($uid);
|
||||
if ($apiRequests > $maxRequests) {
|
||||
Utility::showApiError(500, 'Request limit reached ('.$apiRequests.'/'.$maxRequests.')');
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Events\UserLoggedIn;
|
||||
use App\Models\User;
|
||||
use App\Models\Settings;
|
||||
use Illuminate\Support\Arr;
|
||||
@@ -80,7 +81,8 @@ class LoginController extends Controller
|
||||
}
|
||||
|
||||
if (Auth::attempt($request->only($login_type, 'password'), $rememberMe)) {
|
||||
User::updateSiteAccessed($user->id, (int) Settings::settingValue('..storeuserips') === 1 ? $request->getClientIp() : '');
|
||||
$userIp = (int) Settings::settingValue('..storeuserips') === 1 ? $request->getClientIp() : '';
|
||||
event(new UserLoggedIn($user, $userIp));
|
||||
|
||||
Auth::logoutOtherDevices($request->input('password'));
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ namespace App\Http\Controllers;
|
||||
|
||||
require_once NN_LIB.'utility/SmartyUtils.php';
|
||||
|
||||
use App\Events\UserLoggedIn;
|
||||
use App\Models\User;
|
||||
use Blacklight\SABnzbd;
|
||||
use App\Models\Category;
|
||||
@@ -243,7 +244,7 @@ class BasePageController extends Controller
|
||||
|
||||
// Update last login every 15 mins.
|
||||
if ((strtotime($this->userdata['now']) - 900) > strtotime($this->userdata['lastlogin'])) {
|
||||
User::updateSiteAccessed($this->userdata->id);
|
||||
event(new UserLoggedIn($this->userdata));
|
||||
}
|
||||
|
||||
$this->smarty->assign('userdata', $this->userdata);
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
namespace App\Listeners;
|
||||
|
||||
use App\Events\UserAccessedApi;
|
||||
use App\Models\User;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
|
||||
class UpdateUserAccessedApi
|
||||
{
|
||||
/**
|
||||
* Create the event listener.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle the event.
|
||||
*
|
||||
* @param UserAccessedApi $event
|
||||
* @return void
|
||||
*/
|
||||
public function handle(UserAccessedApi $event)
|
||||
{
|
||||
User::find($event->user->id)->update(['apiaccess' => now()->format('Y-m-d h:m:s')]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace App\Listeners;
|
||||
|
||||
use App\Events\UserLoggedIn;
|
||||
use App\Models\User;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
|
||||
class UpdateUserLoggedIn
|
||||
{
|
||||
/**
|
||||
* Create the event listener.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle the event.
|
||||
*
|
||||
* @param UserLoggedIn $event
|
||||
* @return void
|
||||
*/
|
||||
public function handle(UserLoggedIn $event)
|
||||
{
|
||||
User::find($event->user->id)->update(
|
||||
[
|
||||
'lastlogin' => now(),
|
||||
'host' => $event->ip,
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -780,30 +780,6 @@ class User extends Authenticatable
|
||||
return $user->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* When a user logs in, update the last time they logged in.
|
||||
*
|
||||
* @param int $userID ID of the user.
|
||||
* @param string $host
|
||||
*/
|
||||
public static function updateSiteAccessed($userID, $host = ''): void
|
||||
{
|
||||
self::find($userID)->update(
|
||||
[
|
||||
'lastlogin' => now(),
|
||||
'host' => $host,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $uid
|
||||
*/
|
||||
public static function updateApiAccessed($uid): void
|
||||
{
|
||||
self::find($uid)->update(['apiaccess' => date('Y-m-d h:m:s')]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the list of categories the user has excluded.
|
||||
*
|
||||
|
||||
@@ -2,7 +2,13 @@
|
||||
|
||||
namespace App\Providers;
|
||||
|
||||
use App\Events\UserAccessedApi;
|
||||
use App\Events\UserLoggedIn;
|
||||
use App\Listeners\UpdateUserAccessedApi;
|
||||
use App\Listeners\UpdateUserLoggedIn;
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Illuminate\Auth\Events\Registered;
|
||||
use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
|
||||
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
|
||||
|
||||
class EventServiceProvider extends ServiceProvider
|
||||
@@ -13,8 +19,16 @@ class EventServiceProvider extends ServiceProvider
|
||||
* @var array
|
||||
*/
|
||||
protected $listen = [
|
||||
'App\Events\Event' => [
|
||||
'App\Listeners\EventListener',
|
||||
Registered::class => [
|
||||
SendEmailVerificationNotification::class,
|
||||
],
|
||||
|
||||
UserLoggedIn::class => [
|
||||
UpdateUserLoggedIn::class,
|
||||
],
|
||||
|
||||
UserAccessedApi::class => [
|
||||
UpdateUserAccessedApi::class,
|
||||
],
|
||||
];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user