Initial rbac;
This commit is contained in:
@@ -1,16 +1,16 @@
|
||||
<!-- core:js -->
|
||||
<script src="assets/vendors/core/core.js"></script>
|
||||
<script src="/assets/vendors/core/core.js"></script>
|
||||
<!-- endinject -->
|
||||
|
||||
<!-- Plugin js for this page -->
|
||||
<script src="assets/vendors/flatpickr/flatpickr.min.js"></script>
|
||||
<script src="/assets/vendors/flatpickr/flatpickr.min.js"></script>
|
||||
<!-- End plugin js for this page -->
|
||||
|
||||
<!-- inject:js -->
|
||||
<script src="assets/vendors/feather-icons/feather.min.js"></script>
|
||||
<script src="assets/js/template.js"></script>
|
||||
<script src="/assets/vendors/feather-icons/feather.min.js"></script>
|
||||
<script src="/assets/js/template.js"></script>
|
||||
<!-- endinject -->
|
||||
|
||||
<!-- Custom js for this page -->
|
||||
<script src="assets/js/dashboard-dark.js"></script>
|
||||
<script src="/assets/js/dashboard-dark.js"></script>
|
||||
<!-- End custom js for this page -->
|
||||
|
||||
101
resources/views/users/create.blade.php
Normal file
101
resources/views/users/create.blade.php
Normal file
@@ -0,0 +1,101 @@
|
||||
<x-app-layout>
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-8">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="float-start">
|
||||
Add New User
|
||||
</div>
|
||||
<div class="float-end">
|
||||
<a href="{{ route('users.index') }}" class="btn btn-primary btn-sm">← Back</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form action="{{ route('users.store') }}" method="post">
|
||||
@csrf
|
||||
|
||||
<div class="mb-3 row">
|
||||
<label for="name" class="col-md-4 col-form-label text-md-end text-start">Name</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control @error('name') is-invalid @enderror" id="name"
|
||||
name="name" value="{{ old('name') }}">
|
||||
@if ($errors->has('name'))
|
||||
<span class="text-danger">{{ $errors->first('name') }}</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3 row">
|
||||
<label for="email" class="col-md-4 col-form-label text-md-end text-start">Email
|
||||
Address</label>
|
||||
<div class="col-md-6">
|
||||
<input type="email" class="form-control @error('email') is-invalid @enderror" id="email"
|
||||
name="email" value="{{ old('email') }}">
|
||||
@if ($errors->has('email'))
|
||||
<span class="text-danger">{{ $errors->first('email') }}</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3 row">
|
||||
<label for="password"
|
||||
class="col-md-4 col-form-label text-md-end text-start">Password</label>
|
||||
<div class="col-md-6">
|
||||
<input type="password" class="form-control @error('password') is-invalid @enderror"
|
||||
id="password" name="password">
|
||||
@if ($errors->has('password'))
|
||||
<span class="text-danger">{{ $errors->first('password') }}</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3 row">
|
||||
<label for="password_confirmation" class="col-md-4 col-form-label text-md-end text-start">Confirm
|
||||
Password</label>
|
||||
<div class="col-md-6">
|
||||
<input type="password" class="form-control" id="password_confirmation"
|
||||
name="password_confirmation">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3 row">
|
||||
<label for="roles" class="col-md-4 col-form-label text-md-end text-start">Roles</label>
|
||||
<div class="col-md-6">
|
||||
<select class="form-select @error('roles') is-invalid @enderror" multiple
|
||||
aria-label="Roles" id="roles" name="roles[]">
|
||||
@forelse ($roles as $role)
|
||||
|
||||
@if ($role!='Super Admin')
|
||||
<option
|
||||
value="{{ $role }}" {{ in_array($role, old('roles') ?? []) ? 'selected' : '' }}>
|
||||
{{ $role }}
|
||||
</option>
|
||||
@else
|
||||
@if (Auth::user()->hasRole('Super Admin'))
|
||||
<option
|
||||
value="{{ $role }}" {{ in_array($role, old('roles') ?? []) ? 'selected' : '' }}>
|
||||
{{ $role }}
|
||||
</option>
|
||||
@endif
|
||||
@endif
|
||||
|
||||
@empty
|
||||
|
||||
@endforelse
|
||||
</select>
|
||||
@if ($errors->has('roles'))
|
||||
<span class="text-danger">{{ $errors->first('roles') }}</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3 row">
|
||||
<input type="submit" class="col-md-3 offset-md-5 btn btn-primary" value="Add User">
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</x-app-layout>
|
||||
102
resources/views/users/edit.blade.php
Normal file
102
resources/views/users/edit.blade.php
Normal file
@@ -0,0 +1,102 @@
|
||||
<x-app-layout>
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-8">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="float-start">
|
||||
Edit User
|
||||
</div>
|
||||
<div class="float-end">
|
||||
<a href="{{ route('users.index') }}" class="btn btn-primary btn-sm">← Back</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form action="{{ route('users.update', $user->id) }}" method="post">
|
||||
@csrf
|
||||
@method("PUT")
|
||||
|
||||
<div class="mb-3 row">
|
||||
<label for="name" class="col-md-4 col-form-label text-md-end text-start">Name</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control @error('name') is-invalid @enderror" id="name"
|
||||
name="name" value="{{ $user->name }}">
|
||||
@if ($errors->has('name'))
|
||||
<span class="text-danger">{{ $errors->first('name') }}</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3 row">
|
||||
<label for="email" class="col-md-4 col-form-label text-md-end text-start">Email
|
||||
Address</label>
|
||||
<div class="col-md-6">
|
||||
<input type="email" class="form-control @error('email') is-invalid @enderror" id="email"
|
||||
name="email" value="{{ $user->email }}">
|
||||
@if ($errors->has('email'))
|
||||
<span class="text-danger">{{ $errors->first('email') }}</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3 row">
|
||||
<label for="password"
|
||||
class="col-md-4 col-form-label text-md-end text-start">Password</label>
|
||||
<div class="col-md-6">
|
||||
<input type="password" class="form-control @error('password') is-invalid @enderror"
|
||||
id="password" name="password">
|
||||
@if ($errors->has('password'))
|
||||
<span class="text-danger">{{ $errors->first('password') }}</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3 row">
|
||||
<label for="password_confirmation" class="col-md-4 col-form-label text-md-end text-start">Confirm
|
||||
Password</label>
|
||||
<div class="col-md-6">
|
||||
<input type="password" class="form-control" id="password_confirmation"
|
||||
name="password_confirmation">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3 row">
|
||||
<label for="roles" class="col-md-4 col-form-label text-md-end text-start">Roles</label>
|
||||
<div class="col-md-6">
|
||||
<select class="form-select @error('roles') is-invalid @enderror" multiple
|
||||
aria-label="Roles" id="roles" name="roles[]">
|
||||
@forelse ($roles as $role)
|
||||
|
||||
@if ($role!='Super Admin')
|
||||
<option
|
||||
value="{{ $role }}" {{ in_array($role, $userRoles ?? []) ? 'selected' : '' }}>
|
||||
{{ $role }}
|
||||
</option>
|
||||
@else
|
||||
@if (Auth::user()->hasRole('Super Admin'))
|
||||
<option
|
||||
value="{{ $role }}" {{ in_array($role, $userRoles ?? []) ? 'selected' : '' }}>
|
||||
{{ $role }}
|
||||
</option>
|
||||
@endif
|
||||
@endif
|
||||
|
||||
@empty
|
||||
|
||||
@endforelse
|
||||
</select>
|
||||
@if ($errors->has('roles'))
|
||||
<span class="text-danger">{{ $errors->first('roles') }}</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3 row">
|
||||
<input type="submit" class="col-md-3 offset-md-5 btn btn-primary" value="Update User">
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</x-app-layout>
|
||||
70
resources/views/users/index.blade.php
Normal file
70
resources/views/users/index.blade.php
Normal file
@@ -0,0 +1,70 @@
|
||||
vi
|
||||
<div class="card">
|
||||
<div class="card-header">Manage Users</div>
|
||||
<div class="card-body">
|
||||
@can('create-user')
|
||||
<a href="{{ route('users.create') }}" class="btn btn-success btn-sm my-2"><i class="bi bi-plus-circle"></i> Add New User</a>
|
||||
@endcan
|
||||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">S#</th>
|
||||
<th scope="col">Name</th>
|
||||
<th scope="col">Email</th>
|
||||
<th scope="col">Roles</th>
|
||||
<th scope="col">Action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@forelse ($users as $user)
|
||||
<tr>
|
||||
<th scope="row">{{ $loop->iteration }}</th>
|
||||
<td>{{ $user->name }}</td>
|
||||
<td>{{ $user->email }}</td>
|
||||
<td>
|
||||
@forelse ($user->getRoleNames() as $role)
|
||||
<span class="badge bg-primary">{{ $role }}</span>
|
||||
@empty
|
||||
@endforelse
|
||||
</td>
|
||||
<td>
|
||||
<form action="{{ route('users.destroy', $user->id) }}" method="post">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
|
||||
<a href="{{ route('users.show', $user->id) }}" class="btn btn-warning btn-sm"><i class="bi bi-eye"></i> Show</a>
|
||||
|
||||
@if (in_array('Super Admin', $user->getRoleNames()->toArray() ?? []) )
|
||||
@if (Auth::user()->hasRole('Super Admin'))
|
||||
<a href="{{ route('users.edit', $user->id) }}" class="btn btn-primary btn-sm"><i class="bi bi-pencil-square"></i> Edit</a>
|
||||
@endif
|
||||
@else
|
||||
@can('edit-user')
|
||||
<a href="{{ route('users.edit', $user->id) }}" class="btn btn-primary btn-sm"><i class="bi bi-pencil-square"></i> Edit</a>
|
||||
@endcan
|
||||
|
||||
@can('delete-user')
|
||||
@if (Auth::user()->id!=$user->id)
|
||||
<button type="submit" class="btn btn-danger btn-sm" onclick="return confirm('Do you want to delete this user?');"><i class="bi bi-trash"></i> Delete</button>
|
||||
@endif
|
||||
@endcan
|
||||
@endif
|
||||
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
@empty
|
||||
<td colspan="5">
|
||||
<span class="text-danger">
|
||||
<strong>No User Found!</strong>
|
||||
</span>
|
||||
</td>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{{ $users->links() }}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</x-app-layout>
|
||||
44
resources/views/users/show.blade.php
Normal file
44
resources/views/users/show.blade.php
Normal file
@@ -0,0 +1,44 @@
|
||||
<x-app-layout>
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-8">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="float-start">
|
||||
User Information
|
||||
</div>
|
||||
<div class="float-end">
|
||||
<a href="{{ route('users.index') }}" class="btn btn-primary btn-sm">← Back</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
|
||||
<div class="mb-3 row">
|
||||
<label for="name" class="col-md-4 col-form-label text-md-end text-start"><strong>Name:</strong></label>
|
||||
<div class="col-md-6" style="line-height: 35px;">
|
||||
{{ $user->name }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3 row">
|
||||
<label for="email" class="col-md-4 col-form-label text-md-end text-start"><strong>Email
|
||||
Address:</strong></label>
|
||||
<div class="col-md-6" style="line-height: 35px;">
|
||||
{{ $user->email }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3 row">
|
||||
<label for="roles"
|
||||
class="col-md-4 col-form-label text-md-end text-start"><strong>Roles:</strong></label>
|
||||
<div class="col-md-6" style="line-height: 35px;">
|
||||
@forelse ($user->getRoleNames() as $role)
|
||||
<span class="badge bg-primary">{{ $role }}</span>
|
||||
@empty
|
||||
@endforelse
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</x-app-layout>
|
||||
Reference in New Issue
Block a user