move into sonardesk

This commit is contained in:
Mark Gregory
2026-10-12 14:50:13 +01:00
parent 5f0d2ceb72
commit 38b4a7406f
879 changed files with 24021 additions and 1 deletions
+6
View File
@@ -0,0 +1,6 @@
<?php
return [
'name' => 'Users',
'enabled' => true,
];
+56
View File
@@ -0,0 +1,56 @@
<?php
namespace Modules\Users\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Validation\Rule;
use Spatie\Permission\Models\Role;
final class UserController extends Controller
{
public function index()
{
return view('stylist-theme-admin::administration.users.index', ['users' => User::with('roles')->latest()->paginate(20)]);
}
public function create()
{
return view('stylist-theme-admin::administration.users.create', ['roles' => Role::orderBy('name')->pluck('name')]);
}
public function store(Request $request)
{
$data = $request->validate(['name' => ['required', 'string', 'max:255'], 'email' => ['required', 'email', 'max:255', 'unique:users,email'], 'password' => ['required', 'string', 'min:8', 'confirmed'], 'roles' => ['array'], 'roles.*' => ['string', 'exists:roles,name']]);
$user = User::create($data);
$user->syncRoles($data['roles'] ?? []);
return redirect()->route('administration.users.index')->with('status', 'User created.');
}
public function edit(User $user)
{
return view('stylist-theme-admin::administration.users.edit', ['user' => $user->load('roles'), 'roles' => Role::orderBy('name')->pluck('name')]);
}
public function update(Request $request, User $user)
{
$data = $request->validate(['name' => ['required', 'string', 'max:255'], 'email' => ['required', 'email', 'max:255', Rule::unique('users', 'email')->ignore($user)], 'password' => ['nullable', 'string', 'min:8', 'confirmed'], 'roles' => ['array'], 'roles.*' => ['string', 'exists:roles,name']]);
if (blank($data['password'] ?? null)) {
unset($data['password']);
}
$user->update($data);
$user->syncRoles($data['roles'] ?? []);
return redirect()->route('administration.users.index')->with('status', 'User updated.');
}
public function destroy(User $user)
{
abort_if($user->is(auth()->user()), 422, 'You cannot delete your own account.');
$user->delete();
return redirect()->route('administration.users.index')->with('status', 'User deleted.');
}
}
+17
View File
@@ -0,0 +1,17 @@
<?php
namespace Modules\Users\Providers;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Route;
final class RouteServiceProvider extends ServiceProvider
{
public function boot(): void
{
parent::boot();
$this->routes(function (): void {
Route::middleware('web')->group(module_path('Users', 'Routes/web.php'));
});
}
}
+21
View File
@@ -0,0 +1,21 @@
<?php
namespace Modules\Users\Providers;
use Illuminate\Support\ServiceProvider;
use Modules\Users\Support\ModuleInfo;
final class UsersServiceProvider extends ServiceProvider
{
public function register(): void
{
$this->app->register(RouteServiceProvider::class);
$this->mergeConfigFrom(module_path(ModuleInfo::name(), 'Config/config.php'), ModuleInfo::nameLower());
}
public function boot(): void
{
$this->loadMigrationsFrom(module_path(ModuleInfo::name(), 'Database/Migrations'));
$this->loadViewsFrom(module_path(ModuleInfo::name(), 'Resources/views'), ModuleInfo::nameLower());
}
}
+8
View File
@@ -0,0 +1,8 @@
<?php
use Illuminate\Support\Facades\Route;
use Modules\Users\Http\Controllers\UserController;
Route::middleware(['auth', 'verified'])->prefix('administration/users')->name('administration.users.')->group(function (): void {
Route::resource('', UserController::class)->parameters(['' => 'user'])->except(['show']);
});
+16
View File
@@ -0,0 +1,16 @@
<?php
namespace Modules\Users\Support;
final class ModuleInfo
{
public static function name(): string
{
return 'Users';
}
public static function nameLower(): string
{
return 'users';
}
}
+5
View File
@@ -0,0 +1,5 @@
<?php
it('boots the Users module', function (): void {
expect(config('users.name'))->toBe('Users');
});
+10
View File
@@ -0,0 +1,10 @@
{
"name": "absdev/users-module",
"description": "Users foundation module for the ABSDEV Laravel application platform.",
"type": "laravel-module",
"autoload": {
"psr-4": {
"Modules\\Users\\": ""
}
}
}
+20
View File
@@ -0,0 +1,20 @@
{
"name": "Users",
"alias": "users",
"version": "1.0.0",
"description": "Users foundation module for the ABSDEV Laravel application platform.",
"keywords": [
"laravel",
"modules",
"users"
],
"priority": 10,
"providers": [
"Modules\\Users\\Providers\\UsersServiceProvider"
],
"aliases": {},
"files": [],
"requires": [
"Core"
]
}