This commit is contained in:
molong
2022-05-24 16:10:50 +08:00
parent a37870c93b
commit d8e43f9e93
63 changed files with 2169 additions and 230 deletions

View File

@@ -9,7 +9,31 @@
namespace app\model;
use think\Model;
use think\facade\Config;
use think\facade\Db;
class BaseModel extends Model{
public function scopeUserauth($query, $where = []){
$auth = request()->auth();
$uid = request()->user['uid'];
$map = [];
if(!in_array($uid, Config::get('auth.admin_root'))){
$subMap = [];
if($auth['data_range'] == 4){
$subMap[] = ['department_id', 'IN', getDepartmentChild($auth['department_id'])];
}elseif($auth['data_range'] == 3){
$subMap[] = ['department_id', 'IN', $auth['department_id']];
}elseif($auth['data_range'] == 2){
$map[] = ['creator_id', '=', $uid];
}
if(!empty($subMap)){
$subsql = Db::name('users')->where($subMap)->field('uid')->buildSql();
$subsql = str_replace(" AS thinkphp) AS T1 )", "", $subsql);
$subsql = str_replace("SELECT T1.* FROM (SELECT thinkphp.*, ROW_NUMBER() OVER ( ORDER BY rand()) AS ROW_NUMBER FROM (", "", $subsql);
$map[] = ['creator_id', 'IN', Db::raw($subsql)];
}
}
$query->where($where)->where($map);
}
}

View File

@@ -0,0 +1,34 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\model\auth;
use think\model\concern\SoftDelete;
use think\facade\Config;
use app\model\BaseModel;
class Departments extends BaseModel{
use SoftDelete;
protected $deleteTime = 'delete_time';
protected $defaultSoftDelete = 0;
public function scopeAuth($query){
$auth = request()->auth();
$uid = request()->user['uid'];
$map = [];
// if(!in_array($uid, Config::get('auth.admin_root'))){
// if($auth['data_range'] == 2 || $auth['data_range'] == 3){
// $map[] = ['id', '=', $auth['department_id']]; //只能看自己是也只能查自己所在部门
// }elseif($auth['data_range'] == 4){
// $map[] = ['id', 'IN', getDepartmentChild($auth['department_id'])]; //部门及以下数据
// }
// }
$query->where($map);
}
}

View File

@@ -0,0 +1,13 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\model\auth;
class PermissionAccess extends \think\model\Pivot{
protected $name = "RoleHasPermissions";
}

View File

@@ -0,0 +1,39 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\model\auth;
class Permissions extends \app\model\BaseModel{
protected $type = [
'created_time' => 'timestamp',
'updated_time' => 'timestamp',
'hidden' => 'int',
'hiddenBreadcrumb' => 'int',
'api_list' => 'json'
];
protected function getMetaAttr($value, $data){
return [
'title' => $data['title'],
'type' => $data['type'],
'icon' => $data['icon'],
'color' => $data['color'],
'hidden' => (int) $data['hidden'],
'hiddenBreadcrumb' => (int) $data['hiddenBreadcrumb'],
'affix' => (int) $data['affix'],
];
}
protected function getApiListAttr($value){
return $value ? json_decode($value, true) : [];
}
public function getList(){
$map = [];
return $this->where($map)->order('sort asc,id desc')->select();
}
}

23
app/model/auth/Roles.php Normal file
View File

@@ -0,0 +1,23 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\model\auth;
use app\model\BaseModel;
class Roles extends BaseModel{
protected function getMobileModuleAttr($value){
return is_string($value) ? explode(",", $value) : [];
}
protected function setMobileModuleAttr($value){
return is_array($value) ? implode(",", $value) : $value;
}
public function permissions(){
return $this->belongsToMany(Permissions::class, PermissionAccess::class, 'permission_id', 'role_id');
}
}

View File

@@ -0,0 +1,16 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\model\auth;
class RolesAccess extends \think\model\Pivot{
protected $name = "UserHasRoles";
public static function getRoleByUid(){
return [];
}
}

49
app/model/auth/Users.php Normal file
View File

@@ -0,0 +1,49 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\model\auth;
use app\model\BaseModel;
use think\facade\Config;
use xiaodi\JWTAuth\Facade\Jwt;
class Users extends BaseModel{
public $pk = 'uid';
public function getTokenAttr($value, $data){
$token = Jwt::store('api')->token($data)->__toString();
return $token;
}
public function scopeAuth($query, $where = []){
$auth = request()->auth();
$uid = request()->user['uid'];
$map = [];
// if(!in_array($uid, Config::get('auth.admin_root'))){
// if($auth['data_range'] == 2){
// $map[] = ['uid', '=', $uid];//只能看自己
// }elseif($auth['data_range'] == 3){
// $map[] = ['department_id', '=', $auth['department_id']]; //查自己所在部门
// }elseif($auth['data_range'] == 4){
// $map[] = ['department_id', 'IN', getDepartmentChild($auth['department_id'])]; //部门及以下数据
// }
// }
$query->where($query)->where($where);
}
public function roles(){
return $this->belongsToMany(Roles::class, RolesAccess::class, 'role_id', 'uid');
}
public function department(){
return $this->hasOne(Departments::class, 'id', 'department_id')->bind([
'department_name' => 'title'
]);
}
}

View File

@@ -0,0 +1,25 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\model\auth;
use app\model\BaseModel;
use think\model\concern\SoftDelete;
class UsersLog extends BaseModel{
use SoftDelete;
protected $pk = 'uid';
protected $deleteTime = 'delete_time';
protected $defaultSoftDelete = 0;
public function user(){
return $this->hasOne(Users::class, 'uid', 'uid')->bind([
'nickname' => 'nickname'
]);
}
}

View File

@@ -6,15 +6,10 @@
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\model\user;
namespace app\model\system;
use app\model\BaseModel;
use xiaodi\JWTAuth\Facade\Jwt;
class Users extends BaseModel{
public function getTokenAttr($value, $data){
$token = Jwt::store('api')->token($data)->__toString();
return $token;
}
class Config extends BaseModel{
}

View File

@@ -0,0 +1,20 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\model\system;
use app\model\BaseModel;
use think\model\concern\SoftDelete;
class Dictionary extends BaseModel{
use SoftDelete;
protected $deleteTime = 'delete_time';
protected $defaultSoftDelete = 0;
}

View File

@@ -0,0 +1,20 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\model\system;
use app\model\BaseModel;
use think\model\concern\SoftDelete;
class DictionaryType extends BaseModel{
use SoftDelete;
protected $deleteTime = 'delete_time';
protected $defaultSoftDelete = 0;
}