feat: ✨ Add readable name for permissions
This commit is contained in:
parent
f9a102509b
commit
8fdac0ee46
|
@ -38,7 +38,7 @@ class UserController extends Controller
|
|||
const CHANGE_USERNAME_PERMISSION = "admin.users.write.username";
|
||||
const CHANGE_PASSWORD_PERMISSION = "admin.users.write.password";
|
||||
const CHANGE_ROLE_PERMISSION ="admin.users.write.role";
|
||||
const CHANGE_REFERAL_PERMISSION ="admin.users.write.referal";
|
||||
const CHANGE_REFERAL_PERMISSION ="admin.users.write.referral";
|
||||
const CHANGE_PTERO_PERMISSION = "admin.users.write.pterodactyl";
|
||||
const DELETE_PERMISSION = "admin.users.delete";
|
||||
const NOTIFY_PERMISSION = "admin.users.notify";
|
||||
|
@ -361,10 +361,10 @@ class UserController extends Controller
|
|||
|
||||
return datatables($query)
|
||||
->addColumn('avatar', function (User $user) {
|
||||
return '<img width="28px" height="28px" class="rounded-circle ml-1" src="' . $user->getAvatar() . '">';
|
||||
return '<img width="28px" height="28px" class="ml-1 rounded-circle" src="' . $user->getAvatar() . '">';
|
||||
})
|
||||
->addColumn('credits', function (User $user) {
|
||||
return '<i class="fas fa-coins mr-2"></i> ' . $user->credits();
|
||||
return '<i class="mr-2 fas fa-coins"></i> ' . $user->credits();
|
||||
})
|
||||
->addColumn('verified', function (User $user) {
|
||||
return $user->getVerifiedStatus();
|
||||
|
@ -378,10 +378,10 @@ class UserController extends Controller
|
|||
$suspendText = $user->isSuspended() ? __('Unsuspend') : __('Suspend');
|
||||
|
||||
return '
|
||||
<a data-content="' . __('Login as User') . '" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.users.loginas', $user->id) . '" class="btn btn-sm btn-primary mr-1"><i class="fas fa-sign-in-alt"></i></a>
|
||||
<a data-content="' . __('Verify') . '" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.users.verifyEmail', $user->id) . '" class="btn btn-sm btn-secondary mr-1"><i class="fas fa-envelope"></i></a>
|
||||
<a data-content="' . __('Show') . '" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.users.show', $user->id) . '" class="btn btn-sm text-white btn-warning mr-1"><i class="fas fa-eye"></i></a>
|
||||
<a data-content="' . __('Edit') . '" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.users.edit', $user->id) . '" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></a>
|
||||
<a data-content="' . __('Login as User') . '" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.users.loginas', $user->id) . '" class="mr-1 btn btn-sm btn-primary"><i class="fas fa-sign-in-alt"></i></a>
|
||||
<a data-content="' . __('Verify') . '" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.users.verifyEmail', $user->id) . '" class="mr-1 btn btn-sm btn-secondary"><i class="fas fa-envelope"></i></a>
|
||||
<a data-content="' . __('Show') . '" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.users.show', $user->id) . '" class="mr-1 text-white btn btn-sm btn-warning"><i class="fas fa-eye"></i></a>
|
||||
<a data-content="' . __('Edit') . '" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.users.edit', $user->id) . '" class="mr-1 btn btn-sm btn-info"><i class="fas fa-pen"></i></a>
|
||||
<form class="d-inline" method="post" action="' . route('admin.users.togglesuspend', $user->id) . '">
|
||||
' . csrf_field() . '
|
||||
<button data-content="' . $suspendText . '" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm ' . $suspendColor . ' text-white mr-1"><i class="far ' . $suspendIcon . '"></i></button>
|
||||
|
@ -389,7 +389,7 @@ class UserController extends Controller
|
|||
<form class="d-inline" onsubmit="return submitResult();" method="post" action="' . route('admin.users.destroy', $user->id) . '">
|
||||
' . csrf_field() . '
|
||||
' . method_field('DELETE') . '
|
||||
<button data-content="' . __('Delete') . '" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm btn-danger mr-1"><i class="fas fa-trash"></i></button>
|
||||
<button data-content="' . __('Delete') . '" data-toggle="popover" data-trigger="hover" data-placement="top" class="mr-1 btn btn-sm btn-danger"><i class="fas fa-trash"></i></button>
|
||||
</form>
|
||||
';
|
||||
})
|
||||
|
|
|
@ -1,137 +1,138 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'*',
|
||||
|
||||
/*
|
||||
* Permissions for admin
|
||||
*/
|
||||
* Permissions for admin
|
||||
*/
|
||||
|
||||
'admin.roles.read',
|
||||
'admin.roles.create',
|
||||
'admin.roles.edit',
|
||||
'admin.roles.delete',
|
||||
'All Permissions' => '*',
|
||||
|
||||
'View Roles' => 'admin.roles.read',
|
||||
'Create Role' => 'admin.roles.create',
|
||||
'Edit Role' => 'admin.roles.edit',
|
||||
'Delete Role' => 'admin.roles.delete',
|
||||
|
||||
|
||||
'admin.ticket.read',
|
||||
'admin.tickets.write',
|
||||
'admin.tickets.get_notification',
|
||||
'View Tickets' => 'admin.ticket.read',
|
||||
'Manage Ticket' => 'admin.tickets.write',
|
||||
'Receive Ticket Notifications' => 'admin.tickets.get_notification',
|
||||
|
||||
'admin.tickets.category.read',
|
||||
'admin.tickets.category.write',
|
||||
'Create Ticket Category' => 'admin.tickets.category.read',
|
||||
'Manage Ticket Category' => 'admin.tickets.category.write',
|
||||
|
||||
'admin.ticket_blacklist.read',
|
||||
'admin.ticket_blacklist.write',
|
||||
'View Blacklist Tickets' => 'admin.ticket_blacklist.read',
|
||||
'Manage Blacklist Tickets' => 'admin.ticket_blacklist.write',
|
||||
|
||||
'admin.overview.read',
|
||||
'admin.overview.sync',
|
||||
'View Overview' => 'admin.overview.read',
|
||||
'Overview Sync' => 'admin.overview.sync',
|
||||
|
||||
'admin.api.read',
|
||||
'admin.api.write',
|
||||
'View Api Keys' => 'admin.api.read',
|
||||
'Manage Api Keys' => 'admin.api.write',
|
||||
|
||||
'admin.users.read',
|
||||
'admin.users.write',
|
||||
'admin.users.suspend',
|
||||
'admin.users.write.credits',
|
||||
'admin.users.write.username',
|
||||
'admin.users.write.password',
|
||||
'admin.users.write.role',
|
||||
'admin.users.write.referal',
|
||||
'admin.users.write.pterodactyl',
|
||||
'admin.users.write.email',
|
||||
'admin.users.notify',
|
||||
'admin.users.login_as',
|
||||
'admin.users.delete',
|
||||
'View Users' => 'admin.users.read',
|
||||
'Manage Users' => 'admin.users.write',
|
||||
'Suspend Users' => 'admin.users.suspend',
|
||||
'Manage User Credits' => 'admin.users.write.credits',
|
||||
'Manage User Name' => 'admin.users.write.username',
|
||||
'Manage User Email' => 'admin.users.write.email',
|
||||
'Manage User Password' => 'admin.users.write.password',
|
||||
'Manage User Role' => 'admin.users.write.role',
|
||||
'Manage User Referral' => 'admin.users.write.referral',
|
||||
'Manage User Pterodactyl' => 'admin.users.write.pterodactyl',
|
||||
|
||||
'admin.servers.read',
|
||||
'admin.servers.write',
|
||||
'admin.servers.suspend',
|
||||
'admin.servers.write.owner',
|
||||
'admin.servers.write.identifier',
|
||||
'admin.servers.delete',
|
||||
'admin.servers.bypass_creation_enabled',
|
||||
'Notify Users' => 'admin.users.notify',
|
||||
'Login As User' => 'admin.users.login_as',
|
||||
'Delete User' => 'admin.users.delete',
|
||||
|
||||
'admin.products.read',
|
||||
'admin.products.create',
|
||||
'admin.products.edit',
|
||||
'admin.products.delete',
|
||||
'View Servers' => 'admin.servers.read',
|
||||
'Manage Servers' => 'admin.servers.write',
|
||||
'Suspend Server' => 'admin.servers.suspend',
|
||||
'Change Server Owner' => 'admin.servers.write.owner',
|
||||
'Manage Server Identifier' => 'admin.servers.write.identifier',
|
||||
'Create Server' => 'admin.servers.bypass_creation_enabled',
|
||||
'Delete Server' => 'admin.servers.delete',
|
||||
|
||||
'admin.store.read',
|
||||
'admin.store.write',
|
||||
'admin.store.disable',
|
||||
'View Products' => 'admin.products.read',
|
||||
'Create Product' => 'admin.products.create',
|
||||
'Edit Product' => 'admin.products.edit',
|
||||
'Delete Product' => 'admin.products.delete',
|
||||
|
||||
'admin.voucher.read',
|
||||
'admin.voucher.write',
|
||||
'View Store' => 'admin.store.read',
|
||||
'Manage Store' => 'admin.store.write',
|
||||
'Disable Store' => 'admin.store.disable',
|
||||
|
||||
'admin.useful_links.read',
|
||||
'admin.useful_links.write',
|
||||
'View Vouchers' => 'admin.voucher.read',
|
||||
'Manage Voucher' => 'admin.voucher.write',
|
||||
|
||||
'admin.legal.read',
|
||||
'admin.legal.write',
|
||||
'View Useful Links' => 'admin.useful_links.read',
|
||||
'Manage Useful Links' => 'admin.useful_links.write',
|
||||
|
||||
'admin.payments.read',
|
||||
'View Legal' => 'admin.legal.read',
|
||||
'Manage Legal' => 'admin.legal.write',
|
||||
|
||||
'admin.partners.read',
|
||||
'admin.partners.write',
|
||||
'View Payments' => 'admin.payments.read',
|
||||
|
||||
'admin.coupons.read',
|
||||
'admin.coupons.write',
|
||||
'View Partners' => 'admin.partners.read',
|
||||
'Manage Partners' => 'admin.partners.write',
|
||||
|
||||
'admin.logs.read',
|
||||
'View Coupons' => 'admin.coupons.read',
|
||||
'Manage Coupons' => 'admin.coupons.write',
|
||||
|
||||
'View Logs' => 'admin.logs.read',
|
||||
|
||||
/*
|
||||
* Settings Permissions
|
||||
*/
|
||||
'settings.discord.read',
|
||||
'settings.discord.write',
|
||||
*/
|
||||
'View Discord Settings' => 'settings.discord.read',
|
||||
'Manage Discord Settings' => 'settings.discord.write',
|
||||
|
||||
'settings.general.read',
|
||||
'settings.general.write',
|
||||
'View General Settings' => 'settings.general.read',
|
||||
'Manage General Settings' => 'settings.general.write',
|
||||
|
||||
'settings.invoice.read',
|
||||
'settings.invoice.write',
|
||||
'View Invoice Settings' => 'settings.invoice.read',
|
||||
'Manage Invoice Settings' => 'settings.invoice.write',
|
||||
|
||||
'settings.locale.read',
|
||||
'settings.locale.write',
|
||||
'View Locale Settings' => 'settings.locale.read',
|
||||
'Manage Locale Settings' => 'settings.locale.write',
|
||||
|
||||
'settings.mail.read',
|
||||
'settings.mail.write',
|
||||
'View Mail Settings' => 'settings.mail.read',
|
||||
'Manage Mail Settings' => 'settings.mail.write',
|
||||
|
||||
'settings.pterodactyl.read',
|
||||
'settings.pterodactyl.write',
|
||||
'View Pterodactyl Settings' => 'settings.pterodactyl.read',
|
||||
'Manage Pterodactyl Settings' => 'settings.pterodactyl.write',
|
||||
|
||||
'settings.referral.read',
|
||||
'settings.referral.write',
|
||||
'View Referral Settings' => 'settings.referral.read',
|
||||
'Manage Referral Settings' => 'settings.referral.write',
|
||||
|
||||
'settings.server.read',
|
||||
'settings.server.write',
|
||||
'View Server Settings' => 'settings.server.read',
|
||||
'Manage Server Settings' => 'settings.server.write',
|
||||
|
||||
'settings.ticket.read',
|
||||
'settings.ticket.write',
|
||||
'View Ticket Settings' => 'settings.ticket.read',
|
||||
'Manage Ticket Settings' => 'settings.ticket.write',
|
||||
|
||||
'settings.user.read',
|
||||
'settings.user.write',
|
||||
'View User Settings' => 'settings.user.read',
|
||||
'Manage User Settings' => 'settings.user.write',
|
||||
|
||||
'settings.website.read',
|
||||
'settings.website.write',
|
||||
'View Website Settings' => 'settings.website.read',
|
||||
'Manage Website Settings' => 'settings.website.write',
|
||||
|
||||
'settings.paypal.read',
|
||||
'settings.paypal.write',
|
||||
'View Paypal Settings' => 'settings.paypal.read',
|
||||
'Manage Paypal Settings' => 'settings.paypal.write',
|
||||
|
||||
'settings.stripe.read',
|
||||
'settings.stripe.write',
|
||||
'View Stripe Settings' => 'settings.stripe.read',
|
||||
'Manage Stripe Settings' => 'settings.stripe.write',
|
||||
|
||||
'settings.mollie.read',
|
||||
'settings.mollie.write',
|
||||
'View Mollie Settings' => 'settings.mollie.read',
|
||||
'Manage Mollie Settings' => 'settings.mollie.write',
|
||||
|
||||
|
||||
/*
|
||||
* Permissions for users
|
||||
* Permissions for users
|
||||
*/
|
||||
'user.server.create',
|
||||
'user.server.upgrade',
|
||||
'user.shop.buy',
|
||||
'user.ticket.read',
|
||||
'user.ticket.write',
|
||||
'user.referral',
|
||||
'User Create Server' => 'user.server.create',
|
||||
'User Upgrade Server' => 'user.server.upgrade',
|
||||
'User Shop Buy' => 'user.shop.buy',
|
||||
'User View Tickets' => 'user.ticket.read',
|
||||
'User Manage Ticket' => 'user.ticket.write',
|
||||
'User View Referral' => 'user.referral',
|
||||
];
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('permissions', function (Blueprint $table) {
|
||||
$table->string('readable_name')->after('name');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('permissions', function (Blueprint $table) {
|
||||
$table->removeColumn('readable_name');
|
||||
});
|
||||
}
|
||||
};
|
|
@ -3,7 +3,6 @@
|
|||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\User;
|
||||
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
||||
use Illuminate\Database\Seeder;
|
||||
use Spatie\Permission\Models\Permission;
|
||||
use Spatie\Permission\Models\Role;
|
||||
|
@ -24,33 +23,29 @@ class PermissionsSeeder extends Seeder
|
|||
|
||||
$users = User::all();
|
||||
foreach($users as $user){
|
||||
$user->assignRole(4);
|
||||
$user->assignRole(Role::findByName('user'));
|
||||
}
|
||||
|
||||
$admins = User::where("role","admin")->get();
|
||||
foreach($admins as $admin) {
|
||||
$admin->syncRoles(1);
|
||||
$admin->syncRoles(Role::findByName('Admin'));
|
||||
}
|
||||
|
||||
$mods = User::where("role","moderator")->get();
|
||||
foreach($mods as $mod) {
|
||||
$mod->syncRoles(2);
|
||||
$mod->syncRoles(Role::findByName('Support-Team'));
|
||||
}
|
||||
|
||||
$clients = User::where("role","client")->get();
|
||||
foreach($clients as $client) {
|
||||
$client->syncRoles(3);
|
||||
$client->syncRoles(Role::findByName('Client'));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
public function createPermissions()
|
||||
{
|
||||
foreach (config('permissions_web') as $name) {
|
||||
Permission::findOrCreate($name);
|
||||
foreach(config('permissions_web') as $permission_name => $permission_value) {
|
||||
Permission::create(['name' => $permission_value, 'readable_name' => $permission_name]);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -56,12 +56,12 @@
|
|||
</li>
|
||||
<li class="nav-item d-none d-sm-inline-block">
|
||||
<a href="{{ route('home') }}" class="nav-link"><i
|
||||
class="fas fa-home mr-2"></i>{{ __('Home') }}</a>
|
||||
class="mr-2 fas fa-home"></i>{{ __('Home') }}</a>
|
||||
</li>
|
||||
@if (!empty($discord_settings->invite_url))
|
||||
<li class="nav-item d-none d-sm-inline-block">
|
||||
<a href="{{ $discord_settings->invite_url }}" class="nav-link" target="__blank"><i
|
||||
class="fab fa-discord mr-2"></i>{{ __('Discord') }}</a>
|
||||
class="mr-2 fab fa-discord"></i>{{ __('Discord') }}</a>
|
||||
</li>
|
||||
@endif
|
||||
|
||||
|
@ -71,13 +71,13 @@
|
|||
<li class="nav-item dropdown">
|
||||
<a class="nav-link" href="#" id="languageDropdown" role="button" data-toggle="dropdown"
|
||||
aria-haspopup="true" aria-expanded="false">
|
||||
<span class="mr-1 d-lg-inline text-gray-600">
|
||||
<small><i class="fa fa-language mr-2"></i></small>{{ __('Language') }}
|
||||
<span class="mr-1 text-gray-600 d-lg-inline">
|
||||
<small><i class="mr-2 fa fa-language"></i></small>{{ __('Language') }}
|
||||
</span>
|
||||
</a>
|
||||
<div class="dropdown-menu dropdown-menu-right shadow animated--grow-in"
|
||||
<div class="shadow dropdown-menu dropdown-menu-right animated--grow-in"
|
||||
aria-labelledby="changeLocale">
|
||||
<form method="post" action="{{ route('changeLocale') }}" class="nav-item text-center">
|
||||
<form method="post" action="{{ route('changeLocale') }}" class="text-center nav-item">
|
||||
@csrf
|
||||
@foreach (explode(',', $locale_settings->available) as $key)
|
||||
<button class="dropdown-item" name="inputLocale" value="{{ $key }}">
|
||||
|
@ -99,7 +99,7 @@
|
|||
</ul>
|
||||
|
||||
<!-- Right navbar links -->
|
||||
<ul class="navbar-nav ml-auto">
|
||||
<ul class="ml-auto navbar-nav">
|
||||
<!-- Notifications Dropdown Menu -->
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link" data-toggle="dropdown" href="#">
|
||||
|
@ -117,9 +117,9 @@
|
|||
@foreach (Auth::user()->unreadNotifications->sortBy('created_at')->take(5) as $notification)
|
||||
<a href="{{ route('notifications.show', $notification->id) }}" class="dropdown-item">
|
||||
<span class="d-inline-block text-truncate" style="max-width: 150px;"><i
|
||||
class="fas fa-envelope mr-2"></i>{{ $notification->data['title'] }}</span>
|
||||
class="mr-2 fas fa-envelope"></i>{{ $notification->data['title'] }}</span>
|
||||
<span
|
||||
class="float-right text-muted text-sm">{{ $notification->created_at->longAbsoluteDiffForHumans() }}
|
||||
class="float-right text-sm text-muted">{{ $notification->created_at->longAbsoluteDiffForHumans() }}
|
||||
ago</span>
|
||||
</a>
|
||||
@endforeach
|
||||
|
@ -136,20 +136,20 @@
|
|||
<li class="nav-item dropdown">
|
||||
<a class="nav-link" href="#" id="userDropdown" role="button" data-toggle="dropdown"
|
||||
aria-haspopup="true" aria-expanded="false">
|
||||
<span class="mr-1 d-lg-inline text-gray-600">
|
||||
<small><i class="fas fa-coins mr-2"></i></small>{{ Auth::user()->credits() }}
|
||||
<span class="mr-1 text-gray-600 d-lg-inline">
|
||||
<small><i class="mr-2 fas fa-coins"></i></small>{{ Auth::user()->credits() }}
|
||||
</span>
|
||||
</a>
|
||||
<div class="dropdown-menu dropdown-menu-right shadow animated--grow-in"
|
||||
<div class="shadow dropdown-menu dropdown-menu-right animated--grow-in"
|
||||
aria-labelledby="userDropdown">
|
||||
<a class="dropdown-item" href="{{ route('store.index') }}">
|
||||
<i class="fas fa-coins fa-sm fa-fw mr-2 text-gray-400"></i>
|
||||
<i class="mr-2 text-gray-400 fas fa-coins fa-sm fa-fw"></i>
|
||||
{{ __('Store') }}
|
||||
</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item" data-toggle="modal" data-target="#redeemVoucherModal"
|
||||
href="javascript:void(0)">
|
||||
<i class="fas fa-money-check-alt fa-sm fa-fw mr-2 text-gray-400"></i>
|
||||
<i class="mr-2 text-gray-400 fas fa-money-check-alt fa-sm fa-fw"></i>
|
||||
{{ __('Redeem code') }}
|
||||
</a>
|
||||
</div>
|
||||
|
@ -158,27 +158,27 @@
|
|||
<li class="nav-item dropdown no-arrow">
|
||||
<a class="nav-link dropdown-toggle" href="#" id="userDropdown" role="button"
|
||||
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<span class="mr-1 d-lg-inline text-gray-600 small">
|
||||
<span class="mr-1 text-gray-600 d-lg-inline small">
|
||||
{{ Auth::user()->name }}
|
||||
<img width="28px" height="28px" class="rounded-circle ml-1"
|
||||
<img width="28px" height="28px" class="ml-1 rounded-circle"
|
||||
src="{{ Auth::user()->getAvatar() }}">
|
||||
</span>
|
||||
</a>
|
||||
<!-- Dropdown - User Information -->
|
||||
<div class="dropdown-menu dropdown-menu-right shadow animated--grow-in"
|
||||
<div class="shadow dropdown-menu dropdown-menu-right animated--grow-in"
|
||||
aria-labelledby="userDropdown">
|
||||
<a class="dropdown-item" href="{{ route('profile.index') }}">
|
||||
<i class="fas fa-user fa-sm fa-fw mr-2 text-gray-400"></i>
|
||||
<i class="mr-2 text-gray-400 fas fa-user fa-sm fa-fw"></i>
|
||||
{{ __('Profile') }}
|
||||
</a>
|
||||
{{-- <a class="dropdown-item" href="#"> --}}
|
||||
{{-- <i class="fas fa-list fa-sm fa-fw mr-2 text-gray-400"></i> --}}
|
||||
{{-- <i class="mr-2 text-gray-400 fas fa-list fa-sm fa-fw"></i> --}}
|
||||
{{-- Activity Log --}}
|
||||
{{-- </a> --}}
|
||||
@if (session()->get('previousUser'))
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item" href="{{ route('users.logbackin') }}">
|
||||
<i class="fas fa-sign-in-alt fa-sm fa-fw mr-2 text-gray-400"></i>
|
||||
<i class="mr-2 text-gray-400 fas fa-sign-in-alt fa-sm fa-fw"></i>
|
||||
{{ __('Log back in') }}
|
||||
</a>
|
||||
@endif
|
||||
|
@ -187,7 +187,7 @@
|
|||
@csrf
|
||||
<button class="dropdown-item" href="#" data-toggle="modal"
|
||||
data-target="#logoutModal">
|
||||
<i class="fas fa-sign-out-alt fa-sm fa-fw mr-2 text-gray-400"></i>
|
||||
<i class="mr-2 text-gray-400 fas fa-sign-out-alt fa-sm fa-fw"></i>
|
||||
{{ __('Logout') }}
|
||||
</button>
|
||||
</form>
|
||||
|
@ -250,7 +250,7 @@
|
|||
<li class="nav-item">
|
||||
<a href="{{ route('ticket.index') }}"
|
||||
class="nav-link @if (Request::routeIs('ticket.*')) active @endif">
|
||||
<i class="nav-icon fas fas fa-ticket-alt"></i>
|
||||
<i class="nav-icon fas fa-ticket-alt"></i>
|
||||
<p>{{ __('Support Ticket') }}</p>
|
||||
</a>
|
||||
</li>
|
||||
|
@ -357,7 +357,7 @@
|
|||
'admin.users.write.username',
|
||||
'admin.users.write.password',
|
||||
'admin.users.write.role',
|
||||
'admin.users.write.referal',
|
||||
'admin.users.write.referral',
|
||||
'admin.users.write.pterodactyl','admin.servers.read',
|
||||
'admin.servers.write',
|
||||
'admin.servers.suspend',
|
||||
|
@ -379,7 +379,7 @@
|
|||
'admin.users.write.username',
|
||||
'admin.users.write.password',
|
||||
'admin.users.write.role',
|
||||
'admin.users.write.referal',
|
||||
'admin.users.write.referral',
|
||||
'admin.users.write.pterodactyl'])
|
||||
<li class="nav-item">
|
||||
<a href="{{ route('admin.users.index') }}"
|
||||
|
@ -510,7 +510,7 @@
|
|||
<!--
|
||||
@if (!Auth::user()->hasVerifiedEmail())
|
||||
@if (Auth::user()->created_at->diffInHours(now(), false) > 1)
|
||||
<div class="alert alert-warning p-2 m-2">
|
||||
<div class="p-2 m-2 alert alert-warning">
|
||||
<h5><i class="icon fas fa-exclamation-circle"></i> {{ __('Warning!') }}</h5>
|
||||
{{ __('You have not yet verified your email address') }} <a class="text-primary"
|
||||
href="{{ route('verification.send') }}">{{ __('Click here to resend verification email') }}</a>
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
@extends('layouts.main')
|
||||
|
||||
@section('content')
|
||||
<div class="main py-4">
|
||||
<div class="py-4 main">
|
||||
|
||||
<div class="card card-body border-0 shadow table-wrapper table-responsive">
|
||||
<div class="border-0 shadow card card-body table-wrapper table-responsive">
|
||||
<h2 class="mb-4 h5">{{ isset($role) ? __('Edit role') : __('Create role') }}</h2>
|
||||
|
||||
<form method="post"
|
||||
|
@ -43,14 +43,14 @@
|
|||
multiple>
|
||||
@foreach($permissions as $permission)
|
||||
<option @if(isset($role) && $role->permissions->contains($permission)) selected
|
||||
@endif value="{{$permission->id}}">{{$permission->name}}</option>
|
||||
@endif value="{{$permission->id}}">{{$permission->readable_name}}</option>
|
||||
@endforeach
|
||||
</x-input.select>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group d-flex justify-content-end mt-3">
|
||||
<div class="mt-3 form-group d-flex justify-content-end">
|
||||
<button name="submit" type="submit" class="btn btn-primary">{{__('Submit')}}</button>
|
||||
</div>
|
||||
</form>
|
||||
|
@ -61,7 +61,9 @@
|
|||
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', (event) => {
|
||||
$('#permissions').select2();
|
||||
$('#permissions').select2({
|
||||
closeOnSelect: false
|
||||
});
|
||||
})
|
||||
</script>
|
||||
@endsection
|
||||
|
|
|
@ -1,62 +1,91 @@
|
|||
@extends('layouts.main')
|
||||
|
||||
@section('content')
|
||||
<div class="main py-4">
|
||||
|
||||
@can('admin.roles.write')
|
||||
<div class="d-flex justify-content-end my-3">
|
||||
<a href="{{route('admin.roles.create')}}" class="btn btn-primary"><i
|
||||
class="fa fas fa-shield-alt pe-2"></i>{{__('Create role')}}</a>
|
||||
<section class="content-header">
|
||||
<div class="container-fluid">
|
||||
<div class="mb-2 row">
|
||||
<div class="col-sm-6">
|
||||
<h1>{{__('Create role')}}</h1>
|
||||
</div>
|
||||
@endcan
|
||||
|
||||
<div class="card card-body border-0 shadow table-wrapper table-responsive">
|
||||
<h2 class="mb-4 h5">{{ __('Roles') }}</h2>
|
||||
|
||||
<div class="card-body table-responsive">
|
||||
|
||||
<table id="datatable" class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{__("ID")}}</th>
|
||||
<th>{{__("Name")}}</th>
|
||||
<th>{{__("User count")}}</th>
|
||||
<th>{{__("Permissions count")}}</th>
|
||||
<th>{{__("Power")}}</th>
|
||||
<th>{{__("Actions")}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="col-sm-6">
|
||||
<ol class="breadcrumb float-sm-right">
|
||||
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
|
||||
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.roles.index')}}">{{__('Roles List')}}</a></li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
<script>
|
||||
</section>
|
||||
|
||||
document.addEventListener("DOMContentLoaded", function () {
|
||||
$('#datatable').DataTable({
|
||||
language: {
|
||||
url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("SETTINGS::LOCALE:DATATABLES")}}.json'
|
||||
},
|
||||
processing: true,
|
||||
serverSide: true, //increases loading times too much? change back to "true" if it does
|
||||
stateSave: true,
|
||||
ajax: "{{route('admin.roles.datatable')}}",
|
||||
columns: [
|
||||
{data: 'id'},
|
||||
{data: 'name'},
|
||||
{data: 'usercount'},
|
||||
{data: 'permissionscount'},
|
||||
{data: 'power'},
|
||||
{data: 'actions' , sortable : false},
|
||||
],
|
||||
fnDrawCallback: function( oSettings ) {
|
||||
$('[data-toggle="popover"]').popover();
|
||||
}
|
||||
<section class="content">
|
||||
<div class="container-fluid">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="d-flex justify-content-between">
|
||||
<h5 class="card-title"><i class="mr-2 fas fa-user-check"></i>{{__('Roles List')}}</h5>
|
||||
</div>
|
||||
@can('admin.roles.write')
|
||||
<a href="{{route('admin.roles.create')}}" class="float-right btn btn-primary"><i class="fa fas fa-shield-alt pe-2"></i>{{__('Create role')}}</a>
|
||||
@endcan
|
||||
</div>
|
||||
<div class="card-body table-responsive">
|
||||
<div class="card-body table-responsive">
|
||||
<table id="datatable" class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{__("ID")}}</th>
|
||||
<th>{{__("Name")}}</th>
|
||||
<th>{{__("User count")}}</th>
|
||||
<th>{{__("Permissions count")}}</th>
|
||||
<th>{{__("Power")}}</th>
|
||||
<th>{{__("Actions")}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
$('#datatable').DataTable({
|
||||
language: {
|
||||
url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("SETTINGS::LOCALE:DATATABLES")}}.json'
|
||||
},
|
||||
processing: true,
|
||||
serverSide: true, //increases loading times too much? change back to "true" if it does
|
||||
stateSave: true,
|
||||
ajax: "{{route('admin.roles.datatable')}}",
|
||||
columns: [{
|
||||
data: 'id'
|
||||
},
|
||||
{
|
||||
data: 'name'
|
||||
},
|
||||
{
|
||||
data: 'usercount'
|
||||
},
|
||||
{
|
||||
data: 'permissionscount'
|
||||
},
|
||||
{
|
||||
data: 'power'
|
||||
},
|
||||
{
|
||||
data: 'actions',
|
||||
sortable: false
|
||||
}
|
||||
],
|
||||
fnDrawCallback: function(oSettings) {
|
||||
$('[data-toggle="popover"]').popover();
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
</script>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<!-- CONTENT HEADER -->
|
||||
<section class="content-header">
|
||||
<div class="container-fluid">
|
||||
<div class="row mb-2">
|
||||
<div class="mb-2 row">
|
||||
<div class="col-sm-6">
|
||||
<h1>{{__('Ticket')}}</h1>
|
||||
</div>
|
||||
|
@ -28,9 +28,9 @@
|
|||
|
||||
<div class="card-header">
|
||||
<div class="d-flex justify-content-between">
|
||||
<h5 class="card-title"><i class="fas fa-ticket-alt mr-2"></i>{{__('Ticket List')}}</h5>
|
||||
<h5 class="card-title"><i class="mr-2 fas fa-ticket-alt"></i>{{__('Ticket List')}}</h5>
|
||||
</div>
|
||||
<a href="{{route("admin.ticket.category.index")}}"><button class="btn btn-primary float-right">+ {{__("Add Category")}}</button></a>
|
||||
<a href="{{route("admin.ticket.category.index")}}"><button class="float-right btn btn-primary">+ {{__("Add Category")}}</button></a>
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -56,12 +56,12 @@
|
|||
</li>
|
||||
<li class="nav-item d-none d-sm-inline-block">
|
||||
<a href="{{ route('home') }}" class="nav-link"><i
|
||||
class="fas fa-home mr-2"></i>{{ __('Home') }}</a>
|
||||
class="mr-2 fas fa-home"></i>{{ __('Home') }}</a>
|
||||
</li>
|
||||
@if (!empty($discord_settings->invite_url))
|
||||
<li class="nav-item d-none d-sm-inline-block">
|
||||
<a href="{{ $discord_settings->invite_url }}" class="nav-link" target="__blank"><i
|
||||
class="fab fa-discord mr-2"></i>{{ __('Discord') }}</a>
|
||||
class="mr-2 fab fa-discord"></i>{{ __('Discord') }}</a>
|
||||
</li>
|
||||
@endif
|
||||
|
||||
|
@ -71,13 +71,13 @@
|
|||
<li class="nav-item dropdown">
|
||||
<a class="nav-link" href="#" id="languageDropdown" role="button" data-toggle="dropdown"
|
||||
aria-haspopup="true" aria-expanded="false">
|
||||
<span class="mr-1 d-lg-inline text-gray-600">
|
||||
<small><i class="fa fa-language mr-2"></i></small>{{ __('Language') }}
|
||||
<span class="mr-1 text-gray-600 d-lg-inline">
|
||||
<small><i class="mr-2 fa fa-language"></i></small>{{ __('Language') }}
|
||||
</span>
|
||||
</a>
|
||||
<div class="dropdown-menu dropdown-menu-right shadow animated--grow-in"
|
||||
<div class="shadow dropdown-menu dropdown-menu-right animated--grow-in"
|
||||
aria-labelledby="changeLocale">
|
||||
<form method="post" action="{{ route('changeLocale') }}" class="nav-item text-center">
|
||||
<form method="post" action="{{ route('changeLocale') }}" class="text-center nav-item">
|
||||
@csrf
|
||||
@foreach (explode(',', $locale_settings->available) as $key)
|
||||
<button class="dropdown-item" name="inputLocale" value="{{ $key }}">
|
||||
|
@ -99,7 +99,7 @@
|
|||
</ul>
|
||||
|
||||
<!-- Right navbar links -->
|
||||
<ul class="navbar-nav ml-auto">
|
||||
<ul class="ml-auto navbar-nav">
|
||||
<!-- Notifications Dropdown Menu -->
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link" data-toggle="dropdown" href="#">
|
||||
|
@ -117,9 +117,9 @@
|
|||
@foreach (Auth::user()->unreadNotifications->sortBy('created_at')->take(5) as $notification)
|
||||
<a href="{{ route('notifications.show', $notification->id) }}" class="dropdown-item">
|
||||
<span class="d-inline-block text-truncate" style="max-width: 150px;"><i
|
||||
class="fas fa-envelope mr-2"></i>{{ $notification->data['title'] }}</span>
|
||||
class="mr-2 fas fa-envelope"></i>{{ $notification->data['title'] }}</span>
|
||||
<span
|
||||
class="float-right text-muted text-sm">{{ $notification->created_at->longAbsoluteDiffForHumans() }}
|
||||
class="float-right text-sm text-muted">{{ $notification->created_at->longAbsoluteDiffForHumans() }}
|
||||
ago</span>
|
||||
</a>
|
||||
@endforeach
|
||||
|
@ -136,20 +136,20 @@
|
|||
<li class="nav-item dropdown">
|
||||
<a class="nav-link" href="#" id="userDropdown" role="button" data-toggle="dropdown"
|
||||
aria-haspopup="true" aria-expanded="false">
|
||||
<span class="mr-1 d-lg-inline text-gray-600">
|
||||
<small><i class="fas fa-coins mr-2"></i></small>{{ Auth::user()->credits() }}
|
||||
<span class="mr-1 text-gray-600 d-lg-inline">
|
||||
<small><i class="mr-2 fas fa-coins"></i></small>{{ Auth::user()->credits() }}
|
||||
</span>
|
||||
</a>
|
||||
<div class="dropdown-menu dropdown-menu-right shadow animated--grow-in"
|
||||
<div class="shadow dropdown-menu dropdown-menu-right animated--grow-in"
|
||||
aria-labelledby="userDropdown">
|
||||
<a class="dropdown-item" href="{{ route('store.index') }}">
|
||||
<i class="fas fa-coins fa-sm fa-fw mr-2 text-gray-400"></i>
|
||||
<i class="mr-2 text-gray-400 fas fa-coins fa-sm fa-fw"></i>
|
||||
{{ __('Store') }}
|
||||
</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item" data-toggle="modal" data-target="#redeemVoucherModal"
|
||||
href="javascript:void(0)">
|
||||
<i class="fas fa-money-check-alt fa-sm fa-fw mr-2 text-gray-400"></i>
|
||||
<i class="mr-2 text-gray-400 fas fa-money-check-alt fa-sm fa-fw"></i>
|
||||
{{ __('Redeem code') }}
|
||||
</a>
|
||||
</div>
|
||||
|
@ -158,27 +158,27 @@
|
|||
<li class="nav-item dropdown no-arrow">
|
||||
<a class="nav-link dropdown-toggle" href="#" id="userDropdown" role="button"
|
||||
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<span class="mr-1 d-lg-inline text-gray-600 small">
|
||||
<span class="mr-1 text-gray-600 d-lg-inline small">
|
||||
{{ Auth::user()->name }}
|
||||
<img width="28px" height="28px" class="rounded-circle ml-1"
|
||||
<img width="28px" height="28px" class="ml-1 rounded-circle"
|
||||
src="{{ Auth::user()->getAvatar() }}">
|
||||
</span>
|
||||
</a>
|
||||
<!-- Dropdown - User Information -->
|
||||
<div class="dropdown-menu dropdown-menu-right shadow animated--grow-in"
|
||||
<div class="shadow dropdown-menu dropdown-menu-right animated--grow-in"
|
||||
aria-labelledby="userDropdown">
|
||||
<a class="dropdown-item" href="{{ route('profile.index') }}">
|
||||
<i class="fas fa-user fa-sm fa-fw mr-2 text-gray-400"></i>
|
||||
<i class="mr-2 text-gray-400 fas fa-user fa-sm fa-fw"></i>
|
||||
{{ __('Profile') }}
|
||||
</a>
|
||||
{{-- <a class="dropdown-item" href="#"> --}}
|
||||
{{-- <i class="fas fa-list fa-sm fa-fw mr-2 text-gray-400"></i> --}}
|
||||
{{-- <i class="mr-2 text-gray-400 fas fa-list fa-sm fa-fw"></i> --}}
|
||||
{{-- Activity Log --}}
|
||||
{{-- </a> --}}
|
||||
@if (session()->get('previousUser'))
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item" href="{{ route('users.logbackin') }}">
|
||||
<i class="fas fa-sign-in-alt fa-sm fa-fw mr-2 text-gray-400"></i>
|
||||
<i class="mr-2 text-gray-400 fas fa-sign-in-alt fa-sm fa-fw"></i>
|
||||
{{ __('Log back in') }}
|
||||
</a>
|
||||
@endif
|
||||
|
@ -187,7 +187,7 @@
|
|||
@csrf
|
||||
<button class="dropdown-item" href="#" data-toggle="modal"
|
||||
data-target="#logoutModal">
|
||||
<i class="fas fa-sign-out-alt fa-sm fa-fw mr-2 text-gray-400"></i>
|
||||
<i class="mr-2 text-gray-400 fas fa-sign-out-alt fa-sm fa-fw"></i>
|
||||
{{ __('Logout') }}
|
||||
</button>
|
||||
</form>
|
||||
|
@ -250,7 +250,7 @@
|
|||
<li class="nav-item">
|
||||
<a href="{{ route('ticket.index') }}"
|
||||
class="nav-link @if (Request::routeIs('ticket.*')) active @endif">
|
||||
<i class="nav-icon fas fas fa-ticket-alt"></i>
|
||||
<i class="nav-icon fas fa-ticket-alt"></i>
|
||||
<p>{{ __('Support Ticket') }}</p>
|
||||
</a>
|
||||
</li>
|
||||
|
@ -357,7 +357,7 @@
|
|||
'admin.users.write.username',
|
||||
'admin.users.write.password',
|
||||
'admin.users.write.role',
|
||||
'admin.users.write.referal',
|
||||
'admin.users.write.referral',
|
||||
'admin.users.write.pterodactyl','admin.servers.read',
|
||||
'admin.servers.write',
|
||||
'admin.servers.suspend',
|
||||
|
@ -379,7 +379,7 @@
|
|||
'admin.users.write.username',
|
||||
'admin.users.write.password',
|
||||
'admin.users.write.role',
|
||||
'admin.users.write.referal',
|
||||
'admin.users.write.referral',
|
||||
'admin.users.write.pterodactyl'])
|
||||
<li class="nav-item">
|
||||
<a href="{{ route('admin.users.index') }}"
|
||||
|
@ -520,7 +520,7 @@
|
|||
<!--
|
||||
@if (!Auth::user()->hasVerifiedEmail())
|
||||
@if (Auth::user()->created_at->diffInHours(now(), false) > 1)
|
||||
<div class="alert alert-warning p-2 m-2">
|
||||
<div class="p-2 m-2 alert alert-warning">
|
||||
<h5><i class="icon fas fa-exclamation-circle"></i> {{ __('Warning!') }}</h5>
|
||||
{{ __('You have not yet verified your email address') }} <a class="text-primary"
|
||||
href="{{ route('verification.send') }}">{{ __('Click here to resend verification email') }}</a>
|
||||
|
|
Loading…
Reference in a new issue