This commit is contained in:
molong
2022-10-04 15:10:37 +08:00
parent d2752116a7
commit 96319f0898
23 changed files with 338 additions and 39 deletions

View File

@@ -9,6 +9,7 @@
namespace app\services\auth;
use app\model\auth\Users;
use app\model\Member;
use app\model\auth\Permissions;
use sent\tree\Tree;
use think\facade\Env;
@@ -31,15 +32,26 @@ class AuthService{
}
$user = Users::where($map)->field(['uid','username', 'password', 'email', 'avatar', 'department_id', 'status'])->findOrEmpty();
if (!$user->isEmpty()) {
if(password_verify($params['password'], $user->password)){
throw new \think\Exception('密码不正确!', 100002);
}elseif($user->status != 1){
throw new \think\Exception('当前用户不可用', 100003);
}else{
return $user->append(['token']);
if(!password_verify($params['password'], $user->password)){
$member = Member::where($map)->findOrEmpty();
if (!$member->isEmpty() && $member['password'] === md5($params['password'] . $member['salt'])) {
$user->save(['password'=>password_hash($params['password'], PASSWORD_DEFAULT)]);
}else{
throw new \think\Exception('密码不正确!', 100002);
}
}
if($user->status != 1){
throw new \think\Exception('当前用户不可用', 100003);
}
return $user->append(['token']);
}else{
throw new \think\Exception('当前用户不存在', 100001);
$member = Member::where($map)->findOrEmpty();
if(!$member->isEmpty()){
$user = Users::create(['uid' => $member['uid'], 'username' => $member['username'], 'password' => password_hash($params['password'], PASSWORD_DEFAULT), 'nickname' => $member['nickname'], 'email' => $member['email'], 'department_id' => $member['department']]);
}else{
throw new \think\Exception('当前用户不存在', 100001);
}
}
}
@@ -51,7 +63,7 @@ class AuthService{
public function getAuthMenu(){
$order = "sort asc, id desc";
$map = [];
if(request()->user['uid'] == Env::get('admin_root')){
if(request()->user['uid'] != Env::get('admin_root')){
$map[] = ['name', 'IN', request()->auth()['permission']];
}
$map[] = ['type', '=', 'menu'];
@@ -64,4 +76,23 @@ class AuthService{
return (new Tree())->listToTree($list, 'id', 'parent_id', 'children');
}
/**
* @title 获取已授权菜单
*
* @return void
*/
public function getAuthPermissions(){
$map = [];
if(request()->user['uid'] != Env::get('admin_root')){
$map[] = ['name', 'IN', request()->auth()['permission']];
}
$map[] = ['hidden', '=', 0];
$list = Permissions::where($map)->select();
$data = [];
foreach($list as $item){
$data[] = $item['name'];
};
return $data;
}
}

View File

@@ -24,7 +24,7 @@ class MenuService{
$rootid = Env::get('admin_root');
$order = "sort asc, id desc";
$map = [];
if(request()->user['uid'] == $rootid){
if(request()->user['uid'] != $rootid){
$map[] = ['name', 'IN', request()->auth()['permission']];
}
if($is_menu){

View File

@@ -86,4 +86,9 @@ class RoleService{
];
return $role->save($save);
}
public function updateRole($request){
$data = $request->param();
return Roles::update($data);
}
}

View File

@@ -11,6 +11,7 @@ namespace app\services\auth;
use app\model\auth\Users;
use app\model\auth\UsersLog;
use xin\helper\Server;
use xin\helper\Time;
class UsersLogService{
@@ -23,6 +24,17 @@ class UsersLogService{
public function getUserLogList($request){
$param = $request->param();
$map = [];
if(isset($param['date_type']) && $param['date_type']){
$time = Time::today();
if($param['date_type'] == 'seven'){
$time = Time::dayToNow(7);
}elseif($param['date_type'] == 'yesterday'){
$time = Time::yesterday(7);
}elseif($param['date_type'] == 'week'){
$time = Time::week(7);
}
$map[] = ['create_time', 'BETWEEN TIME', $time];
}
if(isset($param['method']) && $param['method']){
$map[] = ['method', '=', strtoupper($param['method'])];
}
@@ -34,6 +46,38 @@ class UsersLogService{
return $list;
}
/**
* @title 获取用户操作日志
*
* @param [type] $request
* @return void
*/
public function getMyLogList($request){
$param = $request->param();
$map = [];
$map[] = ['uid', '=', $request->user['uid']];
if(isset($param['method']) && $param['method']){
$map[] = ['method', '=', strtoupper($param['method'])];
}
if(isset($param['date_type']) && $param['date_type']){
$time = Time::today();
if($param['date_type'] == 'seven'){
$time = Time::dayToNow(7);
}elseif($param['date_type'] == 'yesterday'){
$time = Time::yesterday(7);
}elseif($param['date_type'] == 'week'){
$time = Time::week(7);
}
$map[] = ['create_time', 'BETWEEN TIME', $time];
}
if(isset($param['date']) && $param['date'] && count($param['date']) == 2){
$map[] = ['create_time', 'BETWEEN TIME', $param['date']];
}
$list = UsersLog::with(['user'])->where($map)->order('create_time desc')->paginate($request->pageConfig);
return $list;
}
/**
* @title 用户操作记录
*
@@ -47,11 +91,12 @@ class UsersLogService{
if(!isset($request->user['uid'])){
return false;
}
$param = strlen(json_encode($param)) > 1000 ? 'param to loog' : json_encode($param);
$data = [
'uid' => isset($request->user['uid']) ? $request->user['uid'] : '',
'title' => self::getCurrentTitle($request),
'route' => $request->baseUrl(),
'params' => json_encode($param),
'params' => $param,
'method' => $request->method(),
'client_ip' => Server::getRemoteIp(),
'browser' => $request->header('user-agent'),

View File

@@ -37,7 +37,7 @@ class UsersService{
$q->name('user_has_roles')->where($subMap)->field('uid');
}];
}
$list = Users::with(['roles'])->auth([])->where($map)->order('uid desc')->paginate($request->pageConfig)->each(function($item){
$list = Users::with(['roles', 'department'])->auth([])->where($map)->order('uid desc')->paginate($request->pageConfig)->each(function($item){
$roleId = [];
$roleName = [];
$identify = [];
@@ -60,14 +60,15 @@ class UsersService{
*/
public function createUsers($request){
$param = $request->param();
// $data = [
// 'username' => $param['username'],
// 'nickname' => $param['nickname'],
// 'department_id' => $param['department_id']
// ];
$data = [
'username' => $param['username'],
'nickname' => $param['nickname'],
'password' => $param['password'],
'department_id' => $param['department_id']
];
// $user = Users::create($data);
// return $user;
$user = Users::create($data);
return $user;
}
/**
* @title 批量导入
@@ -103,18 +104,42 @@ class UsersService{
}
public function updateUsers($request){
$param = $request->param();
$roles = isset($param['role_id']) ? $param['role_id'] : [];
$user = Users::where('uid', '=', $param['uid'])->findOrEmpty();
if(!$user->isEmpty()){
$data = [
'avatar' => $param['avatar'],
'nickname' => $param['nickname'],
'department_id' => is_array($param['department_id']) ? $param['department_id'][0] : $param['department_id'],
'manage_class' => $param['manage_class'],
];
if(isset($param['nickname']) && $param['nickname']){
$data['nickname'] = $param['nickname'];
}
if(isset($param['email']) && $param['email']){
$data['email'] = $param['email'];
}
if(isset($param['avatar']) && $param['avatar']){
$data['avatar'] = $param['avatar'];
}
if(isset($param['department_id']) && $param['department_id']){
$data['department_id'] = is_array($param['department_id']) ? end($param['department_id']) : $param['department_id'];
}
$user->save($data);
}
if(!empty($roles)){
$this->updateRoles($param['uid'], $roles); //更新角色
}
return false;
}
public function updateUserPassword($request){
$user = Users::where('uid', '=', $request->user['uid'])->findOrEmpty();
$params = $request->param();
if(!$user->isEmpty()){
if(password_verify($params['oldpassword'], $user->password)){
$user->save(['password' => $params['password']]);
}else{
throw new \think\Exception("当前密码错误!", 1);
}
}
}
/**
* @title 获取用户权限信息
*