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() !!} -