Skip to content

Commit

Permalink
Add camouflage
Browse files Browse the repository at this point in the history
  • Loading branch information
ajifatur committed Aug 17, 2024
1 parent 24f2609 commit cdb33dd
Show file tree
Hide file tree
Showing 8 changed files with 115 additions and 12 deletions.
8 changes: 7 additions & 1 deletion resources/views/admin/dashboard/index.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,13 @@
<div class="d-sm-flex justify-content-between align-items-center mb-3">
<h1 class="h3 mb-0">Dashboard</h1>
</div>
<div class="alert alert-success" role="alert">
@if(Session::get('message'))
<div class="alert alert-success alert-dismissible fade show" role="alert">
<div class="alert-message">{{ Session::get('message') }}</div>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
@endif
<div class="alert alert-primary" role="alert">
<div class="alert-message">
<h4 class="alert-heading">Selamat Datang!</h4>
<p class="mb-0">Selamat datang kembali <strong>{{ Auth::user()->name }}</strong> di {{ setting('name') }}.</p>
Expand Down
15 changes: 15 additions & 0 deletions resources/views/admin/user/index.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,9 @@
<td><span class="badge {{ $user->status == 1 ? 'bg-success' : 'bg-danger' }}">{{ status($user->status) }}</span></td>
<td align="center">
<div class="btn-group">
@if(session()->exists('user') && (session('user') != $user->id && Auth::user()->id != $user->id))
<a href="#" class="btn btn-sm btn-info btn-camouflage" data-id="{{ $user->id }}" data-bs-toggle="tooltip" title="Kamuflase"><i class="bi-person-x"></i></a>
@endif
<a href="{{ route('admin.user.edit', ['id' => $user->id]) }}" class="btn btn-sm btn-warning" data-bs-toggle="tooltip" title="Edit"><i class="bi-pencil"></i></a>
<a href="#" class="btn btn-sm btn-danger btn-delete" data-id="{{ $user->id }}" data-bs-toggle="tooltip" title="Hapus"><i class="bi-trash"></i></a>
</div>
Expand All @@ -86,6 +89,11 @@
</div>
</div>

<form class="form-camouflage d-none" method="post" action="{{ route('admin.camouflage.login') }}">
@csrf
<input type="hidden" name="id">
</form>

<form class="form-delete d-none" method="post" action="{{ route('admin.user.delete') }}">
@csrf
<input type="hidden" name="id">
Expand All @@ -107,6 +115,13 @@
deleteBulk: true
});
// Button Camouflage
$(document).on("click", ".btn-camouflage", function(e) {
e.preventDefault();
$(".form-camouflage").find("input[name=id]").val($(this).data("id"));
$(".form-camouflage").submit();
});
// Button Delete
Spandiv.ButtonDelete(".btn-delete", ".form-delete");
Expand Down
2 changes: 1 addition & 1 deletion resources/views/layouts/admin/_header.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
</ul>
<div class="navbar-collapse collapse">
<ul class="navbar-nav navbar-align align-items-center">
@if(Auth::user()->id == 1)
@if(Auth::user()->id == 1 || session()->exists('user'))
<li class="nav-item dropdown" id="nav-notification">
<a class="nav-icon dropdown-toggle" href="#" id="alertsDropdown" data-bs-toggle="dropdown">
<div class="position-relative">
Expand Down
5 changes: 4 additions & 1 deletion resources/views/layouts/admin/_js.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,10 @@ function setNavBrand() {
$(window).on("load", function() {
$.ajax({
type: "get",
url: "{{ route('api.notification', ['access_token' => Auth::user()->access_token]) }}",
url: Spandiv.URL("{{ route('api.notification') }}", {
"access_token": "{{ Auth::user()->access_token }}",
"camouflage": "{{ session()->exists('user') && session('user') != Auth::user()->id ? 1 : 0 }}",
}),
success: function(response) {
if(response.length > 0) {
$("#nav-notification").find("span.indicator").text(response.length).removeClass("d-none");
Expand Down
31 changes: 23 additions & 8 deletions src/Helpers/Helper.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,9 @@
*/

use Illuminate\Support\Str;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Session;
use Ajifatur\Helpers\FileExt;
use GuzzleHttp\Client;
use GuzzleHttp\Psr7;
Expand Down Expand Up @@ -368,19 +370,32 @@ function package($name = null) {
* @return array
*/
if(!function_exists('notifications')) {
function notifications() {
function notifications($camouflage = null) {
// Set notifications
$notifications = [];

// Check whether super admin account still using default password
$default_password = Hash::check('password', \Ajifatur\FaturHelper\Models\User::first()->password);
if($default_password === true) {
if($camouflage != 1) {
$default_password = Hash::check('password', \Ajifatur\FaturHelper\Models\User::first()->password);
if($default_password === true) {
array_push($notifications, [
'title' => 'Password Akun',
'description' => 'Anda masih menggunakan password default. Segera ganti demi keamanan akun Anda.',
'route' => route('admin.settings.password'),
'icon_name' => 'bi-exclamation-circle',
'icon_color' => 'text-danger',
]);
}
}

// Check whether camouflage
if($camouflage == 1) {
array_push($notifications, [
'title' => 'Password Akun',
'description' => 'Anda masih menggunakan password default. Segera ganti demi keamanan akun Anda.',
'route' => route('admin.settings.password'),
'icon_name' => 'bi-exclamation-circle',
'icon_color' => 'text-danger',
'title' => 'Kamuflase',
'description' => 'Anda sedang berkamuflase menggunakan akun lain. Klik untuk kembali ke akun semula.',
'route' => route('admin.camouflage.logout'),
'icon_name' => 'bi-person-circle',
'icon_color' => 'text-warning',
]);
}

Expand Down
7 changes: 6 additions & 1 deletion src/Helpers/Route.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

namespace Ajifatur\Helpers;

use Request;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Schema;

Expand Down Expand Up @@ -188,6 +189,10 @@ public static function admin()

// Route
Route::get('/admin/route', self::NAMESPACE.'\RouteController@index')->name('admin.route.index');

// Camouflage
Route::post('/admin/camouflage/login', self::NAMESPACE.'\Auth\CamouflageController@login')->name('admin.camouflage.login');
Route::get('/admin/camouflage/logout', self::NAMESPACE.'\Auth\CamouflageController@logout')->name('admin.camouflage.logout');
});
}

Expand Down Expand Up @@ -218,7 +223,7 @@ public static function api()

// Notification
Route::get('/notification', function() {
return response()->json(notifications(), 200);
return response()->json(notifications(Request::query('camouflage')), 200);
})->name('api.notification');
});

Expand Down
57 changes: 57 additions & 0 deletions src/Http/Controllers/Auth/CamouflageController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
<?php

namespace Ajifatur\FaturHelper\Http\Controllers\Auth;

use Auth;
use Illuminate\Http\Request;
use Ajifatur\FaturHelper\Models\User;

class CamouflageController extends \App\Http\Controllers\Controller
{
/**
* Login.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function login(Request $request)
{
// Check the access
has_access(__METHOD__, Auth::user()->role_id);

// Get user
$user = User::findOrFail($request->id);

// Set session for the real account
if(session()->exists('user') == false)
session(['user' => Auth::user()->id]);

// Camouflage
Auth::login($user, true);

// Return
if(session('user') != Auth::user()->id)
return redirect()->route('admin.dashboard')->with(['message' => 'Berhasil melakukan kamuflase akun.']);
}

/**
* Logout.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function logout(Request $request)
{
// Check the access
has_access(__METHOD__, Auth::user()->role_id);

// Get user
$user = User::findOrFail(session('user'));

// Camouflage
Auth::login($user, true);

// Return
return redirect()->route('admin.dashboard')->with(['message' => 'Berhasil kembali ke akun semula.']);
}
}
2 changes: 2 additions & 0 deletions src/Seeders/PermissionSeeder.php
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,8 @@ public function run()
['code' => 'Ajifatur\\FaturHelper\\Http\\Controllers\\LogController::activityByURL', 'name' => 'Menampilkan Log Aktivitas Berdasarkan URL'],
['code' => 'Ajifatur\\FaturHelper\\Http\\Controllers\\LogController::authentication', 'name' => 'Menampilkan Log Autentikasi'],
['code' => 'Ajifatur\\FaturHelper\\Http\\Controllers\\LogController::visitor', 'name' => 'Menampilkan Log Visitor'],
['code' => 'Ajifatur\\FaturHelper\\Http\\Controllers\\Auth\\CamouflageController::login', 'name' => 'Melakukan Kamuflase Akun'],
['code' => 'Ajifatur\\FaturHelper\\Http\\Controllers\\Auth\\CamouflageController::logout', 'name' => 'Kembali ke Akun Semula dari Kamuflase'],
];

$role = Role::where('code', '=', 'super-admin')->first();
Expand Down

0 comments on commit cdb33dd

Please sign in to comment.