feat(cms): implement complete SysSiteCMS content management system
Initial implementation of the HomeSysPanel CMS built with Laravel 13.0. Includes complete admin panel, content management, user authentication, modular architecture for products/services/chatbot, and marketing tools. Key features: - User authentication with email verification and password reset - Role-based access control (Admin/User with granular permissions) - Content management (pages, news, FAQ, downloads, galleries, banners) - Contact management system with subjects and responses - Marketing tools (email campaigns, visitor analytics, social sharing) - Modular architecture (Products, Services, Chatbot modules) - AI Chatbot integration with OpenRouter.ai and LlamaCpp support - Visitor tracking with geolocation - SEO optimization with meta tags and Open Graph - Responsive design with Bootstrap 5 - Dark mode support - Maintenance mode - Feature request system
This commit is contained in:
Executable
+87
@@ -0,0 +1,87 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Contracts\Auth\MustVerifyEmail;
|
||||
use Database\Factories\UserFactory;
|
||||
use Illuminate\Database\Eloquent\Attributes\Fillable;
|
||||
use Illuminate\Database\Eloquent\Attributes\Hidden;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Foundation\Auth\User as Authenticatable;
|
||||
use Illuminate\Notifications\Notifiable;
|
||||
|
||||
#[Fillable(['name', 'email', 'avatar', 'password', 'user_type', 'company', 'website', 'whatsapp', 'preferences', 'permissions'])]
|
||||
#[Hidden(['password', 'remember_token'])]
|
||||
class User extends Authenticatable implements MustVerifyEmail
|
||||
{
|
||||
/** @use HasFactory<UserFactory> */
|
||||
use HasFactory, Notifiable;
|
||||
|
||||
/**
|
||||
* Get the attributes that should be cast.
|
||||
*
|
||||
* @return array<string, string>
|
||||
*/
|
||||
protected function casts(): array
|
||||
{
|
||||
return [
|
||||
'email_verified_at' => 'datetime',
|
||||
'password' => 'hashed',
|
||||
'preferences' => 'array',
|
||||
'permissions' => 'array',
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the user is an Admin.
|
||||
*/
|
||||
public function isAdmin(): bool
|
||||
{
|
||||
$adminType = \App\Models\UserType::where('is_admin', true)->pluck('name')->toArray();
|
||||
return in_array($this->user_type, $adminType);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the user is a regular User.
|
||||
*/
|
||||
public function isUser(): bool
|
||||
{
|
||||
return !$this->isAdmin();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the user has a specific permission.
|
||||
* Admin types always have all permissions.
|
||||
*/
|
||||
public function hasPermission(string $permission): bool
|
||||
{
|
||||
if ($this->isAdmin()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return in_array($permission, $this->permissions ?? []);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all available permissions in the system.
|
||||
*
|
||||
* @return array<string, string>
|
||||
*/
|
||||
public static function getAvailablePermissions(): array
|
||||
{
|
||||
return [
|
||||
'contacts' => 'Gerenciar Contatos',
|
||||
'subjects' => 'Gerenciar Assuntos',
|
||||
'services' => 'Gerenciar Serviços',
|
||||
'faqs' => 'Gerenciar FAQ',
|
||||
'downloads' => 'Gerenciar Downloads',
|
||||
'products' => 'Gerenciar Produtos',
|
||||
'galleries' => 'Gerenciar Galerias',
|
||||
'news' => 'Gerenciar Notícias',
|
||||
'pages' => 'Gerenciar Páginas',
|
||||
'marketing' => 'Marketing',
|
||||
'chatbot' => 'Gerenciar Chatbot',
|
||||
'settings' => 'Dados da Empresa',
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user