CMS Framework - v1.0.0
Quick Start
Get up and running with the CMS Framework in minutes! This guide assumes you've already completed the [[Installation Guide]].
Creating Your First User
Via API
Create a user using the REST API:
curl -X POST http://your-app.test/api/v1/users \
-H "Content-Type: application/json" \
-d '{
"name": "John Doe",
"email": "john@example.com",
"password": "secure-password"
}'
Response:
{
"data": {
"id": 1,
"name": "John Doe",
"email": "john@example.com",
"roles": []
}
}
Via Tinker
Create a user using Laravel's Tinker:
php artisan tinker
$userModel = config('cms-framework.user_model');
$user = $userModel::create([
'name' => 'Jane Admin',
'email' => 'jane@example.com',
'password' => bcrypt('secure-password')
]);
Setting Up Roles and Permissions
Create Roles
use ArtisanPackUI\CMSFramework\Modules\Users\Models\Role;
// Create an admin role
$adminRole = Role::create([
'name' => 'Administrator',
'slug' => 'admin'
]);
// Create an editor role
$editorRole = Role::create([
'name' => 'Editor',
'slug' => 'editor'
]);
Create Permissions
use ArtisanPackUI\CMSFramework\Modules\Users\Models\Permission;
// Create permissions
$permissions = [
['name' => 'Manage Users', 'slug' => 'manage-users'],
['name' => 'Edit Content', 'slug' => 'edit-content'],
['name' => 'View Reports', 'slug' => 'view-reports'],
];
foreach ($permissions as $permission) {
Permission::create($permission);
}
Assign Permissions to Roles
// Give admin all permissions
$adminRole->permissions()->attach([1, 2, 3]); // Permission IDs
// Give editor limited permissions
$editorRole->permissions()->attach([2]); // Only edit-content permission
Assign Roles to Users
// Get the user
$userModel = config('cms-framework.user_model');
$user = $userModel::find(1);
// Assign admin role
$user->roles()->attach($adminRole->id);
// Or assign multiple roles
$user->roles()->attach([$adminRole->id, $editorRole->id]);
Checking User Permissions
In Your Controllers
use Illuminate\Http\Request;
class ContentController extends Controller
{
public function edit(Request $request)
{
$user = $request->user();
// Check if user has specific role
if (!$user->hasRole('admin')) {
abort(403, 'Unauthorized');
}
// Check if user has specific permission
if (!$user->hasPermissionTo('edit-content')) {
abort(403, 'Insufficient permissions');
}
// User has permission, continue...
}
}
In Blade Templates
@if(auth()->user()->hasRole('admin'))
<a href="/admin/dashboard">Admin Dashboard</a>
@endif
@if(auth()->user()->hasPermissionTo('manage-users'))
<a href="/users">Manage Users</a>
@endif
In Routes/Middleware
Create a simple middleware for role checking:
// app/Http/Middleware/CheckRole.php
class CheckRole
{
public function handle($request, Closure $next, $role)
{
if (!$request->user() || !$request->user()->hasRole($role)) {
abort(403, 'Unauthorized');
}
return $next($request);
}
}
Use in routes:
Route::group(['middleware' => ['auth', 'role:admin']], function () {
Route::get('/admin/dashboard', [AdminController::class, 'dashboard']);
});
Common API Operations
List All Users
curl -X GET http://your-app.test/api/v1/users
Get Specific User
curl -X GET http://your-app.test/api/v1/users/1
Update User
curl -X PATCH http://your-app.test/api/v1/users/1 \
-H "Content-Type: application/json" \
-d '{
"name": "John Smith"
}'
Delete User
curl -X DELETE http://your-app.test/api/v1/users/1
Database Seeding
Create a seeder for initial setup:
// database/seeders/CMSSeeder.php
use ArtisanPackUI\CMSFramework\Modules\Users\Models\Role;
use ArtisanPackUI\CMSFramework\Modules\Users\Models\Permission;
class CMSSeeder extends Seeder
{
public function run()
{
// Create roles
$admin = Role::create(['name' => 'Administrator', 'slug' => 'admin']);
$editor = Role::create(['name' => 'Editor', 'slug' => 'editor']);
// Create permissions
$manageUsers = Permission::create(['name' => 'Manage Users', 'slug' => 'manage-users']);
$editContent = Permission::create(['name' => 'Edit Content', 'slug' => 'edit-content']);
// Assign permissions
$admin->permissions()->attach([$manageUsers->id, $editContent->id]);
$editor->permissions()->attach([$editContent->id]);
// Create admin user
$userModel = config('cms-framework.user_model');
$adminUser = $userModel::create([
'name' => 'Admin User',
'email' => 'admin@example.com',
'password' => bcrypt('password')
]);
$adminUser->roles()->attach($admin->id);
}
}
Run the seeder:
php artisan db:seed --class=CMSSeeder
Next Steps
Now that you have the basics working:
- [[User Management]] - Learn about advanced user management features
- [[Roles and Permissions]] - Deep dive into the RBAC system
- [[User API Reference]] - Complete API documentation
- [[Developer Guide]] - Extend and customize the framework
Troubleshooting
Common Issues
Permission Denied Errors
Make sure your User model includes the HasRolesAndPermissions trait and the user has been assigned appropriate roles.
API Endpoints Not Working
Verify that the routes are registered by running php artisan route:list | grep users.
Database Errors
Ensure migrations have been run: php artisan migrate:status
Ready to build more complex functionality? Check out the [[Developer Guide]].