cogroup/cms

Laravel 项目通用的 CMS


README

Latest Stable Version License

重要

为了避免不兼容,有必要从 webpack 中删除 popper、jquery 和 bootstrap;我们的库已经包含了最新的版本。

在 Cms 中注释所有 require 文件

resources/js/bootstrap.js

Cms

对于 Laravel < 5.7,请使用 1.6 分支

对于 Laravel <= 6,请使用 1.8 分支

对于 Laravel 7,请使用 2.0 分支

对于 Laravel 8,请使用 3.0 分支

COgroup - CMS 包是向 Laravel 添加基于角色的权限的基本 CMS 系统的灵活方式。

内容

安装

  1. 运行命令安装 laravel/ui 并生成脚手架
composer require laravel/ui
php artisan ui bootstrap --auth
  1. 为了安装 COgroup - CMS,只需将以下内容添加到您的 composer.json 中。然后运行 composer update
"cogroup/cms": "^3.0"

或者运行以下命令

composer require cogroup/cms "3.*"
  1. fixed Auth::routes, to avoid Clouser error

从 web.php 文件中移除 Auth::routes

  1. 运行以下命令发布包配置文件 config/cogroupcms.php
php artisan vendor:publish --provider="Cogroup\Cms\CmsServiceProvider"
  1. 运行以下命令执行迁移
php artisan migrate
  1. 运行以下命令进行填充
php artisan db:seed --class=CogroupCmsSeeder
  1. 运行以下命令重新发布资产、配置、自定义错误视图、字体、迁移和翻译
php artisan cogroupcms:assets
php artisan cogroupcms:config
php artisan cogroupcms:errorviews
php artisan cogroupcms:fonts
php artisan cogroupcms:migrations
php artisan cogroupcms:seeders
php artisan cogroupcms:translations
  1. config/auth.php 文件 中更改默认用户模型
'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => Cogroup\Cms\Models\User::class,
    ],

    // 'users' => [
    //     'driver' => 'database',
    //     'table' => 'users',
    // ],
],

InterventionImage

安装 Intervention Image 后,打开您的 Laravel 配置文件 config/app.php 并添加以下行。

$providers 数组中添加此包的服务提供者。

Intervention\Image\ImageServiceProvider::class

将此包的外观添加到 $aliases 数组。

'ImageManager' => Intervention\Image\Facades\Image::class

现在 Laravel 将自动加载 Image 类。

在 Laravel 5 中发布配置

$ php artisan vendor:publish --provider="Intervention\Image\ImageServiceProviderLaravelRecent"

配置

config/cogroupcms.php 中设置属性值。这些值将被 cogroup-cms 用于引用正确的前缀、颜色主题和访问 CMS 的 URI。

用户与角色的关系

您现在可以运行 artisan migrate 命令

php artisan migrate

迁移后,将出现七个新表

  • files — 在 CMS 中管理文件
  • modules — CMS 的模块
  • noworkingdays — 特殊日期和能够对一系列日期进行折扣的日期
  • roles — CMS 的角色
  • roles_access — 角色和模块访问之间的关系
  • settings — CMS 基本设置(站名、电子邮件名等)
  • user — 用户和特定角色用户表

模型

文件

Files 模型有八个主要属性

  • originalname — 文件的原始名称。
  • diskname — 上传后文件在系统中的名称。
  • extension — 文件的扩展名。
  • size — 文件的大小。
  • mimetype — 文件的 MIME 类型。
  • alt — HTML中标签alt的文本。
  • width — 当是图片时,一个宽度属性。
  • height — 当是图片时,一个高度属性。
  • ispublic — 确定一个文件是否为公开。
  • created_at — 确定创建日期。
  • updated_at — 确定更新日期。

模块

Modules模型有十个主要属性

  • moduleslug — 模块的别名,用于验证权限。
  • modulename — 要显示的模块名称。
  • description — 对模块功能的更详细说明。
  • active — 模块是否激活。
  • url — 访问模块的url。该url不应该包含域名。
  • icon — 模块的字体图标。
  • parent — 当是子模块时,父模块的id。当是父模块时为0。
  • order — 在菜单中显示模块的顺序。
  • inmenu — 确定模块是否显示在主菜单中。
  • permissions — 确定模块需要的权限。它们必须用逗号分隔。例如:“查看,创建”。

NoWorkingDays

NoWorkingDays模型有两个主要属性

  • date — 特殊日期。
  • active — 确定一个日期是否激活。
  • created_at — 确定创建日期。
  • updated_at — 确定更新日期。

角色

Role模型有两个主要属性

  • rolname — 角色的唯一名称,用于在应用层查找角色信息。例如:“管理员”,“所有者”,“员工”。
  • description — 对角色功能的更详细说明。
  • created_at — 确定创建日期。
  • updated_at — 确定更新日期。

RolesAccess

RolesAccess模型有六个主要属性

  • roles_id — 角色的唯一键,用于与roles表的关系。
  • modules_id — 模块的唯一键,用于与modules表的关系。
  • view — 设置查看模块或子模块的权限。
  • create — 设置在模块或子模块中创建内容的权限。
  • update — 设置在模块或子模块中更新内容的权限。
  • delete — 设置在模块或子模块中删除内容的权限。
  • created_at — 确定创建日期。
  • updated_at — 确定更新日期。

设置

Settings模型有两个主要属性

  • setting — 设置的唯一名称。
  • defaultvalue — 设置属性的值。

用户

这将启用与Role的关系。

现在你已经准备好了。

使用

中间件

你可以使用中间件根据权限或角色过滤路由和路由组

Route::group(['prefix' => 'settings', 'middleware' => ['admin:settings|view']], function() {
    Route::get('/', 'AdminController@welcome');
    Route::post('/', ['middleware' => ['admin:settings|create,update'], 'uses' => 'AdminController@manageAdmins']);
});

可以使用逗号符号验证两个操作之间的内容

'middleware' => ['role:admin|create,update']

辅助权限

你可以使用辅助工具验证权限

cms_roles_check($check, $moduleslug, $type);
  • check是Auth::user信息或模块id。
  • moduleslug是要检查权限的模块的别名。
  • type是可选的权限,默认为view

辅助函数

Cogroup - CMS包含两个“辅助”PHP函数。这些函数由包本身使用;然而,如果你觉得它们方便,你可以在自己的应用程序中使用它们。

cms_get_modules

此函数返回系统的模块,注册到modules表中。

cms_get_modules($modulename, $inmenu, $idrol);
  • modulename是可选参数。如果为NULL,则返回所有模块。
  • inmenu默认为Y。其他选项是N
  • idrol是可选参数,默认为NULL。存在时,它返回具有权限view的角色关联的模块。

cms_settings

此函数返回包含设置值的对象

cms_settings();

示例:cms_settings()->sitename

cms_format_date

此函数返回具有dateformat设置格式的Carbon格式日期

cms_format_date($date);
  • date是必需参数。日期格式必须是Y-m-d。

cms_format_time

此函数返回具有timeformat设置格式的Carbon格式日期

cms_format_time($time);
  • time是必需参数。时间格式必须是H:i:s。

cms_format_datetime

此函数返回具有dateformat和timeformat设置格式的Carbon格式日期

cms_format_datetime($datetime);
  • datetime 是必需参数。日期格式必须为 Y-m-d H:i:s。

cms_get_file_attribute

此函数返回一个 FileModel 属性。

cms_get_file_attribute($id, $attribute);
  • id 是必需参数。Id 在 Files 表中。
  • attribute 是必需参数。表 Files 的列。

cms_get_total_unread_notifications

此函数返回系统未读通知的总数。

cms_get_file_attribute();

仪表板

要更改仪表板,请将 config/cogroupcms.php 文件中的 dashboard 选项更改。添加所有命名空间示例:\App\Http\Controllers\MyDashboardController

通知消息

通过选项在 config/cogroupcms.php 中配置通道。

'via' => ['mail', 'database'],

如果使用邮件通道,请将 use Cogroup\Cms\Notifications\NewMessage; 添加到您的 Controller 中。

要发送消息,请使用 Notification::send( $user, new NewMessage( $from, $message ) );

  • $user 是要发送电子邮件的用户。User 对象。
  • $from 是发送电子邮件的用户。User 对象。
  • $message 是一条数据消息。

通知 JavaScript

此配置用于从 Controller 设置浮动消息。

设置 0 为错误,1 为成功,2 为信息,3 为警告。

$request->session()->flash('status', '1');

设置位置(顶部,底部)。

$request->session()->flash('msgfrom', {position});

设置对齐(左,中,右)。

$request->session()->flash('msgfrom', {align});

设置延迟时间(默认:4000)。

$request->session()->flash('msgtime', {time});

设置一条消息。

$request->session()->flash('msg', {message});

许可证

COgroup CMS 是一款免费软件,根据 MIT 许可证条款发布。

贡献指南

支持遵循 PSR-4 PHP 编码标准,以及语义版本控制。

请在问题页面报告您发现的问题。欢迎提交拉取请求。