diff --git a/DataTables/UsersDataTable.php b/DataTables/UsersDataTable.php
index 04444a8..984b9f3 100644
--- a/DataTables/UsersDataTable.php
+++ b/DataTables/UsersDataTable.php
@@ -3,6 +3,7 @@
namespace Modules\Usermanager\DataTables;
use Modules\Usermanager\Entities\User;
+ use Yajra\DataTables\EloquentDataTable;
use Yajra\DataTables\Html\Column;
use Yajra\DataTables\Services\DataTable;
@@ -18,8 +19,7 @@
public function dataTable($query)
{
- return datatables()
- ->eloquent($query)
+ return (new EloquentDataTable($query))
->filter(function ($query) {
$search = request()->get('search');
if ($search['value'] !== "") {
@@ -27,10 +27,19 @@
->orWhere('email', 'like', "%" . $search['value'] . "%");
}
})
- ->rawColumns(['action'])
+ ->rawColumns(['action','last_login_at'])
->addIndexColumn()
+ ->editColumn('user', function (User $model) {
+ return view('usermanager::users.users.columns._user', compact('model'));
+ })
+ ->editColumn('role', function (User $user) {
+ return ucwords($user->roles->first()?->name);
+ })
+ ->editColumn('last_login_at', function (User $user) {
+ return sprintf('
%s
', $user->last_login_at ? $user->last_login_at->diffForHumans() : $user->updated_at->diffForHumans());
+ })
->addColumn('action', function (User $model) {
- return view('usermanager::users.users._action', compact('model'));
+ return view('usermanager::users.users.columns._action', compact('model'));
});
}
@@ -77,7 +86,9 @@
{
return [
Column::make('DT_RowIndex')->title('No')->orderable(false)->searchable(false),
- Column::make('name')->title(__('Name')),
+ Column::make('user')->addClass('d-flex align-items-center')->name('name'),
+ Column::make('role')->searchable(false),
+ Column::make('last_login_at')->title('Last Login'),
Column::make('email'),
Column::computed('action')
->exportable(false)
diff --git a/Database/Migrations/2014_10_12_000000_create_users_table.php b/Database/Migrations/2014_10_12_000000_create_users_table.php
index 9274987..1c66538 100644
--- a/Database/Migrations/2014_10_12_000000_create_users_table.php
+++ b/Database/Migrations/2014_10_12_000000_create_users_table.php
@@ -18,8 +18,7 @@
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
- $table->foreignId('directorat_id')->nullable();
- $table->foreignId('sub_directorat_id')->nullable();
+ $table->string('avatar')->nullable();
$table->rememberToken();
$table->timestamps();
$table->softDeletes();
diff --git a/Entities/User.php b/Entities/User.php
index 337b394..ab12e02 100644
--- a/Entities/User.php
+++ b/Entities/User.php
@@ -24,7 +24,12 @@
protected $fillable = [
'name',
'email',
- 'password'
+ 'password',
+ 'last_login_at',
+ 'last_login_ip',
+ 'profile_photo_path',
+ 'direktorat_id',
+ 'sub_direktorat_id',
];
/**
@@ -44,5 +49,15 @@
*/
protected $casts = [
'email_verified_at' => 'datetime',
+ 'last_login_at' => 'datetime',
];
+
+ public function getProfilePhotoUrlAttribute()
+ {
+ if ($this->profile_photo_path) {
+ return asset('storage/' . $this->profile_photo_path);
+ }
+
+ return $this->profile_photo_path;
+ }
}
diff --git a/Http/Controllers/Auth/AuthenticatedSessionController.php b/Http/Controllers/Auth/AuthenticatedSessionController.php
index 9b4c873..980276d 100644
--- a/Http/Controllers/Auth/AuthenticatedSessionController.php
+++ b/Http/Controllers/Auth/AuthenticatedSessionController.php
@@ -5,6 +5,7 @@
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Http\Request;
+ use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Auth;
use Modules\Usermanager\Http\Requests\LoginRequest;
@@ -23,6 +24,11 @@
$request->session()->regenerate();
+ $request->user()->update([
+ 'last_login_at' => Carbon::now()->toDateTimeString(),
+ 'last_login_ip' => $request->getClientIp()
+ ]);
+
return redirect()->intended(RouteServiceProvider::HOME);
}
diff --git a/Http/Controllers/Auth/RegisteredUserController.php b/Http/Controllers/Auth/RegisteredUserController.php
index e5740ba..bfd99db 100644
--- a/Http/Controllers/Auth/RegisteredUserController.php
+++ b/Http/Controllers/Auth/RegisteredUserController.php
@@ -34,6 +34,8 @@
'name' => $request->name,
'email' => $request->email,
'password' => Hash::make($request->password),
+ 'last_login_at' => \Illuminate\Support\Carbon::now()->toDateTimeString(),
+ 'last_login_ip' => $request->getClientIp()
]);
event(new Registered($user));
diff --git a/Resources/views/users/users/_action.blade.php b/Resources/views/users/users/_action.blade.php
deleted file mode 100644
index 3e0dde9..0000000
--- a/Resources/views/users/users/_action.blade.php
+++ /dev/null
@@ -1,13 +0,0 @@
-@php
- $route = explode('.', Route::currentRouteName());
-@endphp
-
-
- {!! getIcon("pencil", "fs-1 text-info","duotune") !!}
-
-
- {!! Form::open(['method' => 'DELETE','route' => [$route[0].'.'.$route[1].'.destroy', $model->id],'class'=>'']) !!}
- {{ Form::button(getIcon("trash", "fs-1 text-danger","duotune"), ['type' => 'submit', 'class' => 'delete btn btn-icon btn-bg-light btn-active-light-danger btn-sm'] ) }}
- {!! Form::close() !!}
-