feat(admin): add admin creation with permissions
This commit is contained in:
@@ -0,0 +1,440 @@
|
||||
@extends('admin.layouts.app')
|
||||
|
||||
@section('breadcrumb')
|
||||
<div>
|
||||
<h1 class="page-title fw-medium fs-18 mb-2">
|
||||
افزودن مدیر جدید
|
||||
</h1>
|
||||
|
||||
<div>
|
||||
<nav>
|
||||
<ol class="breadcrumb mb-0">
|
||||
<li class="breadcrumb-item">
|
||||
<a href="{{ route('admin.admins.index') }}">
|
||||
مدیران
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="breadcrumb-item active" aria-current="page">
|
||||
افزودن مدیر
|
||||
</li>
|
||||
</ol>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
|
||||
@section('content')
|
||||
<div class="container-fluid pt-4">
|
||||
|
||||
<div class="row">
|
||||
|
||||
{{-- Success Message --}}
|
||||
@if(session('success'))
|
||||
<div class="alert alert-success">
|
||||
{{ session('success') }}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
|
||||
{{-- Error Message --}}
|
||||
@if(session('error'))
|
||||
<div class="alert alert-danger">
|
||||
{{ session('error') }}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="col-xl-12">
|
||||
|
||||
<form
|
||||
action="{{ route('admin.admins.store') }}"
|
||||
method="POST"
|
||||
enctype="multipart/form-data"
|
||||
>
|
||||
@csrf
|
||||
<div class="card custom-card">
|
||||
|
||||
{{-- Card Header --}}
|
||||
<div class="card-header">
|
||||
<div class="card-title">
|
||||
ایجاد مدیر
|
||||
</div>
|
||||
</div>
|
||||
{{-- Card Body --}}
|
||||
<div class="card-body">
|
||||
|
||||
<div class="row gy-3">
|
||||
|
||||
{{-- First Name --}}
|
||||
<div class="col-xl-6">
|
||||
<label class="form-label">
|
||||
نام
|
||||
</label>
|
||||
|
||||
<input
|
||||
type="text"
|
||||
class="form-control"
|
||||
name="first_name"
|
||||
value="{{ old('first_name') }}"
|
||||
placeholder="نام را وارد کنید"
|
||||
>
|
||||
|
||||
@error('first_name')
|
||||
<span class="text-danger">
|
||||
{{ $message }}
|
||||
</span>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
|
||||
{{-- Last Name --}}
|
||||
<div class="col-xl-6">
|
||||
<label class="form-label">
|
||||
نام خانوادگی
|
||||
</label>
|
||||
|
||||
<input
|
||||
type="text"
|
||||
class="form-control"
|
||||
name="last_name"
|
||||
value="{{ old('last_name') }}"
|
||||
placeholder="نام خانوادگی را وارد کنید"
|
||||
>
|
||||
|
||||
@error('last_name')
|
||||
<span class="text-danger">
|
||||
{{ $message }}
|
||||
</span>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
|
||||
{{-- Username --}}
|
||||
<div class="col-xl-6">
|
||||
<label class="form-label">
|
||||
نام کاربری
|
||||
</label>
|
||||
|
||||
<input
|
||||
type="text"
|
||||
class="form-control"
|
||||
name="username"
|
||||
value="{{ old('username') }}"
|
||||
placeholder="نام کاربری را وارد کنید"
|
||||
>
|
||||
|
||||
@error('username')
|
||||
<span class="text-danger">
|
||||
{{ $message }}
|
||||
</span>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
|
||||
{{-- Email --}}
|
||||
<div class="col-xl-6">
|
||||
<label class="form-label">
|
||||
ایمیل
|
||||
</label>
|
||||
|
||||
<input
|
||||
type="email"
|
||||
class="form-control"
|
||||
name="email"
|
||||
value="{{ old('email') }}"
|
||||
placeholder="ایمیل را وارد کنید"
|
||||
>
|
||||
|
||||
@error('email')
|
||||
<span class="text-danger">
|
||||
{{ $message }}
|
||||
</span>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
|
||||
{{-- Mobile --}}
|
||||
<div class="col-xl-6">
|
||||
<label class="form-label">
|
||||
شماره موبایل
|
||||
</label>
|
||||
|
||||
<input
|
||||
type="text"
|
||||
class="form-control"
|
||||
name="mobile"
|
||||
value="{{ old('mobile') }}"
|
||||
placeholder="شماره موبایل را وارد کنید"
|
||||
>
|
||||
|
||||
@error('mobile')
|
||||
<span class="text-danger">
|
||||
{{ $message }}
|
||||
</span>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
|
||||
{{-- Password --}}
|
||||
<div class="col-xl-6">
|
||||
<label class="form-label">
|
||||
رمز عبور
|
||||
</label>
|
||||
|
||||
<input
|
||||
type="password"
|
||||
class="form-control"
|
||||
name="password"
|
||||
placeholder="رمز عبور را وارد کنید"
|
||||
>
|
||||
|
||||
@error('password')
|
||||
<span class="text-danger">
|
||||
{{ $message }}
|
||||
</span>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
|
||||
{{-- Role --}}
|
||||
<div class="col-xl-6">
|
||||
<label class="form-label">
|
||||
نقش مدیر
|
||||
</label>
|
||||
|
||||
<select
|
||||
class="form-control"
|
||||
name="role"
|
||||
>
|
||||
|
||||
@foreach(\App\Enums\Admin\AdminRole::cases() as $role)
|
||||
|
||||
<option
|
||||
value="{{ $role->value }}"
|
||||
@selected(
|
||||
old('role') == $role->value
|
||||
)
|
||||
>
|
||||
{{ $role->label() }}
|
||||
</option>
|
||||
|
||||
@endforeach
|
||||
|
||||
</select>
|
||||
|
||||
@error('role')
|
||||
<span class="text-danger">
|
||||
{{ $message }}
|
||||
</span>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
|
||||
{{-- Status --}}
|
||||
<div class="col-xl-6">
|
||||
<label class="form-label">
|
||||
وضعیت
|
||||
</label>
|
||||
|
||||
<select
|
||||
class="form-control"
|
||||
name="status"
|
||||
>
|
||||
|
||||
@foreach(\App\Enums\Admin\AdminStatus::cases() as $status)
|
||||
|
||||
<option
|
||||
value="{{ $status->value }}"
|
||||
@selected(
|
||||
old(
|
||||
'status',
|
||||
\App\Enums\Admin\AdminStatus::ACTIVE->value
|
||||
) == $status->value
|
||||
)
|
||||
>
|
||||
{{ $status->label() }}
|
||||
</option>
|
||||
|
||||
@endforeach
|
||||
|
||||
</select>
|
||||
|
||||
@error('status')
|
||||
<span class="text-danger">
|
||||
{{ $message }}
|
||||
</span>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
{{-- Permissions --}}
|
||||
<div class="mt-4">
|
||||
|
||||
<div class="card custom-card">
|
||||
|
||||
<div class="card-header">
|
||||
<div class="card-title">
|
||||
سطح دسترسی
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
|
||||
<div class="row gy-3">
|
||||
|
||||
@foreach(\App\Enums\Admin\AdminPermission::cases() as $permission)
|
||||
<div class="col-xl-3 col-lg-4 col-md-6">
|
||||
<div class="form-check">
|
||||
<input
|
||||
class="form-check-input"
|
||||
type="checkbox"
|
||||
name="permissions[]"
|
||||
value="{{ $permission->value }}"
|
||||
id="permission_{{ $permission->value }}"
|
||||
|
||||
@checked(
|
||||
in_array(
|
||||
$permission->value,
|
||||
old('permissions', [])
|
||||
)
|
||||
)
|
||||
>
|
||||
|
||||
<label
|
||||
class="form-check-label"
|
||||
for="permission_{{ $permission->value }}"
|
||||
>
|
||||
{{ $permission->label() }}
|
||||
</label>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@endforeach
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
@error('permissions')
|
||||
<div class="mt-2">
|
||||
<span class="text-danger">
|
||||
{{ $message }}
|
||||
</span>
|
||||
</div>
|
||||
@enderror
|
||||
|
||||
@error('permissions.*')
|
||||
<div class="mt-2">
|
||||
<span class="text-danger">
|
||||
{{ $message }}
|
||||
</span>
|
||||
</div>
|
||||
@enderror
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
{{-- Avatar --}}
|
||||
<div class="card-avatar mt-4">
|
||||
|
||||
<div class="text-center">
|
||||
|
||||
<label class="form-label d-block fw-semibold">
|
||||
تصویر پروفایل
|
||||
</label>
|
||||
|
||||
<label
|
||||
class="avatar-picker"
|
||||
id="avatarPreview"
|
||||
style="
|
||||
background-image:
|
||||
url('{{ asset('assets/admin/images/faces/DefaultAvatar.jpg') }}')
|
||||
"
|
||||
>
|
||||
|
||||
<input
|
||||
type="file"
|
||||
name="image"
|
||||
accept="image/*"
|
||||
onchange="previewAvatar(this)"
|
||||
>
|
||||
|
||||
</label>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
@error('image')
|
||||
<div class="mt-2">
|
||||
<span class="text-danger">
|
||||
{{ $message }}
|
||||
</span>
|
||||
</div>
|
||||
@enderror
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
{{-- Card Footer --}}
|
||||
<div class="card-footer text-end">
|
||||
|
||||
<a
|
||||
href="{{ route('admin.admins.index') }}"
|
||||
class="btn btn-light"
|
||||
>
|
||||
انصراف
|
||||
</a>
|
||||
|
||||
<button
|
||||
type="submit"
|
||||
class="btn btn-primary"
|
||||
>
|
||||
ثبت اطلاعات
|
||||
</button>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
|
||||
@push('scripts')
|
||||
|
||||
<script>
|
||||
function previewAvatar(input) {
|
||||
|
||||
const preview = document.getElementById('avatarPreview');
|
||||
|
||||
if (input.files && input.files[0]) {
|
||||
|
||||
const reader = new FileReader();
|
||||
|
||||
reader.onload = function (e) {
|
||||
preview.style.backgroundImage =
|
||||
`url('${e.target.result}')`;
|
||||
};
|
||||
|
||||
reader.readAsDataURL(input.files[0]);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@endpush
|
||||
Reference in New Issue
Block a user