Commit da8d947b authored by 冯超鹏's avatar 冯超鹏

添加新的功能

parent 4613efb9
Pipeline #20 canceled with stages
...@@ -74,3 +74,4 @@ available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.ht ...@@ -74,3 +74,4 @@ available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.ht
For answers to common questions about this code of conduct, see For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq https://www.contributor-covenant.org/faq
admin@laravadmin@laravue.devue.devadmin@laravue.dev
\ No newline at end of file
...@@ -13,7 +13,8 @@ use Illuminate\Http\Request; ...@@ -13,7 +13,8 @@ use Illuminate\Http\Request;
use Illuminate\Http\Response; use Illuminate\Http\Response;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use App\Http\Resources\UserResource; use App\Http\Resources\UserResource;
use Illuminate\Support\Facades\DB;
use App\Laravue\Models\Users;
/** /**
* Class AuthController * Class AuthController
* *
...@@ -24,8 +25,9 @@ class AuthController extends Controller ...@@ -24,8 +25,9 @@ class AuthController extends Controller
/** /**
* @param Request $request * @param Request $request
* @return \Illuminate\Http\JsonResponse * @return \Illuminate\Http\JsonResponse
* @ 管理员登入
*/ */
public function login(Request $request) public function login(Request $request , Users $users)
{ {
$credentials = $request->only('email', 'password'); $credentials = $request->only('email', 'password');
if (!Auth::attempt($credentials)) { if (!Auth::attempt($credentials)) {
...@@ -35,9 +37,11 @@ class AuthController extends Controller ...@@ -35,9 +37,11 @@ class AuthController extends Controller
$user = $request->user(); $user = $request->user();
$tokenResult = $user->createToken('Personal Access Token'); $tokenResult = $user->createToken('Personal Access Token');
$token = $tokenResult->token; $token = $tokenResult->token;
$token->save(); $token->save();
return response()->json(new UserResource($user), Response::HTTP_OK)->header('Authorization', $tokenResult->accessToken); return response()->json(new UserResource($user), Response::HTTP_OK)->header('Authorization', $tokenResult->accessToken);
} }
public function logout(Request $request) public function logout(Request $request)
...@@ -50,4 +54,22 @@ class AuthController extends Controller ...@@ -50,4 +54,22 @@ class AuthController extends Controller
{ {
return new UserResource(Auth::user()); return new UserResource(Auth::user());
} }
// 用户登入接口
public function userslogin(Request $request , Users $users){
$credentials = $request->only('email', 'password');
$email = $credentials['email'];
$password = $credentials['password'];
// if (!Auth::attempt($credentials)) {
// return response()->json(new JsonResponse([], 'login_error'), Response::HTTP_UNAUTHORIZED);
// }
$BackgroundUser = $users->where([['username','=',$email],['password','=',sha1($password)],['state','=','2']])->first();
if ($BackgroundUser){
$tokenResult = $BackgroundUser->createToken('Personal Access Token');
$token = $tokenResult->token;
$token->save();
return response()->json(new UserResource($BackgroundUser), Response::HTTP_OK)->header('Authorization', $tokenResult->accessToken);
}else{
return response()->json(new JsonResponse([], 'login_error'), Response::HTTP_UNAUTHORIZED);
}
}
} }
...@@ -6,7 +6,8 @@ use Illuminate\Foundation\Auth\Access\AuthorizesRequests; ...@@ -6,7 +6,8 @@ use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs; use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests; use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController; use Illuminate\Routing\Controller as BaseController;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;
class Controller extends BaseController class Controller extends BaseController
{ {
use AuthorizesRequests, DispatchesJobs, ValidatesRequests; use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
...@@ -58,4 +59,12 @@ class Controller extends BaseController ...@@ -58,4 +59,12 @@ class Controller extends BaseController
], ],
]; ];
} }
/*
* 验证当前登入用户
* */
public function isadmin (){
$user = Auth::user();//获取当前用户信息
$isadmin = DB::table('users')->where([['name', '=', $user['name']], ['email', '=', $user['email']]])->first();
return $isadmin;
}
} }
...@@ -67,10 +67,41 @@ class DevicesController extends Controller ...@@ -67,10 +67,41 @@ class DevicesController extends Controller
} }
} }
//返回逻辑删除的设备
public function physicsdelete(Request $request){
$deviceid = $request->input('deviceid');
$databadevice = DB::table('device');
if($_POST){
$up = $databadevice
->where('id','=',$deviceid)
->update(['delete'=>2]);
return $this->jsonSuccessData($up);
}else{
//返回物理删除设备列表
$type = (int)$request->input('type');//设备类型
$pagenNum=$request->input('page')-1;//页数
$limit = $request->input('limit');//条数
if($pagenNum === '' || $limit == ''){
return $this->jsonErrorData(105,'页数或limit不能为空');
}
$devicelist = $databadevice
->where('dtype','=',$type == '' ? '1':$type)
->where('delete','=','1')//设备逻辑删除状态
->join('device_type as dy',"device.dtype",'=','dy.tid')
->join('gas as g',"device.status",'=','g.id')
->select('dy.tname','g.gas','device.*')
->orderBy('device.id', 'desc')
->offset($pagenNum)
->limit($limit)
->get()->toArray();
return $this->jsonSuccessData($devicelist);
}
}
//添加设备 //添加设备
public function adddevice(Request $request){ public function adddevice(Request $request){
} }
//返回设备类型和单位和介质 //返回设备类型和单位和介质
...@@ -85,6 +116,7 @@ class DevicesController extends Controller ...@@ -85,6 +116,7 @@ class DevicesController extends Controller
$databadevice = DB::table('device'); $databadevice = DB::table('device');
$devicelist = $databadevice $devicelist = $databadevice
->where('dtype','=',$type) ->where('dtype','=',$type)
->where('delete','=','2')//设备不是删除状态
->join('device_type as dy',"device.dtype",'=','dy.tid') ->join('device_type as dy',"device.dtype",'=','dy.tid')
->join('gas as g',"device.status",'=','g.id') ->join('gas as g',"device.status",'=','g.id')
->select('dy.tname','g.gas','device.*') ->select('dy.tname','g.gas','device.*')
...@@ -104,10 +136,13 @@ class DevicesController extends Controller ...@@ -104,10 +136,13 @@ class DevicesController extends Controller
private function getValidationRulesdevice($isNew = true) private function getValidationRulesdevice($isNew = true)
{ {
return [ return [
'devicenum'=>'required|between:2,25|regex:/^[A-Za-z0-9\-\_]+$/|unique:BackgroundUser,username', 'devicenum'=>'required|between:2,25|unique:device,devicenum',//设备编号
'password'=> 'sometimes|required|string|min:6', 'username'=>'required|unique:device,username|max:40',//设备名称
'contacts_phone'=> 'required|regex:/^1[3465789]\d{9}$/|unique:BackgroundUser', 'devicephone'=> 'required|regex:/^1[3465789]\d{9}$/|unique:device,devicephone|max:11',//联系人手机号
'nickname'=>'required|between:2,25|regex:/^[A-Za-z0-9\-\_]+$/|unique:BackgroundUser,nickname' 'devicelinkman'=>'required|max:15',
'dtypeid'=>'sometimes|required',
'statusid'=>'sometimes|required',
'devicemonadid'=>'sometimes|required'
]; ];
} }
......
This diff is collapsed.
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Laravue\Models\wxUser; use App\Laravue\Models\wxUser;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Http\Resources\Json\ResourceCollection; use Illuminate\Http\Resources\Json\ResourceCollection;
......
...@@ -75,6 +75,7 @@ class User extends Authenticatable ...@@ -75,6 +75,7 @@ class User extends Authenticatable
/** /**
* @return bool * @return bool
* 验证是否管理员
*/ */
public function isAdmin(): bool public function isAdmin(): bool
{ {
......
...@@ -14,13 +14,14 @@ use Spatie\Permission\Traits\HasRoles; ...@@ -14,13 +14,14 @@ use Spatie\Permission\Traits\HasRoles;
* @property string $email * @property string $email
* @property string $password * @property string $password
* @property Role[] $roles * @property Role[] $roles
* *protected
* @method static User create(array $user) * @method static User create(array $user)
* @package App * @package App
*/ */
class Users extends Authenticatable class Users extends Authenticatable
{ {
use Notifiable, HasRoles, HasApiTokens; use Notifiable, HasRoles, HasApiTokens;
protected $table = "BackgroundUser"; protected $table = "BackgroundUser";
public $timestamps = false; public $timestamps = false;
...@@ -29,4 +30,59 @@ class Users extends Authenticatable ...@@ -29,4 +30,59 @@ class Users extends Authenticatable
$userdata['add_time'] = time(); $userdata['add_time'] = time();
return $this->insertGetId($userdata); return $this->insertGetId($userdata);
} }
protected $fillable = [
'email', 'password',
];
protected $hidden = [
'password', 'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
/**
* Set permissions guard to API by default
* @var string
*/
protected $guard_name = 'api';
/**
* @inheritdoc
*/
public function getJWTIdentifier()
{
return $this->getKey();
}
/**
* @inheritdoc
*/
public function getJWTCustomClaims()
{
return [];
}
/**
* @return bool
* 验证是否管理员
*/
public function isAdmin(): bool
{
foreach ($this->roles as $role) {
if ($role->isAdmin()) {
return true;
}
}
return false;
}
} }
\ No newline at end of file
...@@ -46,6 +46,11 @@ return [ ...@@ -46,6 +46,11 @@ return [
'provider' => 'users', 'provider' => 'users',
'hash' => false, 'hash' => false,
], ],
'admin' => [
'driver' => 'passport',
'provider' => 'user',
'hash' => false,
],
], ],
/* /*
...@@ -70,11 +75,10 @@ return [ ...@@ -70,11 +75,10 @@ return [
'driver' => 'eloquent', 'driver' => 'eloquent',
'model' => App\Laravue\Models\User::class, 'model' => App\Laravue\Models\User::class,
], ],
'user' => [
// 'users' => [ 'driver' => 'eloquent',
// 'driver' => 'database', 'model' => App\Laravue\Models\Users::class,
// 'table' => 'users', ],
// ],
], ],
/* /*
......
File added
...@@ -77,6 +77,7 @@ export default { ...@@ -77,6 +77,7 @@ export default {
}, },
login: { login: {
title: '系统登录', title: '系统登录',
user:'用户登录',
logIn: '登录', logIn: '登录',
username: '账号', username: '账号',
password: '密码', password: '密码',
......
<template> <template>
<div class="login-container"> <div class="login-container">
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form" auto-complete="on" label-position="left"> <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form" auto-complete="on" label-position="left">
<h3 class="title">
{{ $t('login.title') }} <el-tabs v-model="activeName" @tab-click="handleClick">
</h3> <el-tab-pane label="系统登录" name="first" class="el-tabs__item">
<!-- <h3 class="title">
{{ $t('login.title') }}
</h3> -->
</el-tab-pane>
<el-tab-pane label="用户登录" name="second">
<!-- <h3 class="title">
{{ $t('login.user') }}
</h3> -->
</el-tab-pane>
</el-tabs>
<lang-select class="set-language" /> <lang-select class="set-language" />
<el-form-item prop="email"> <el-form-item prop="email">
<span class="svg-container"> <span class="svg-container">
...@@ -43,7 +53,6 @@ ...@@ -43,7 +53,6 @@
<script> <script>
import LangSelect from '@/components/LangSelect'; import LangSelect from '@/components/LangSelect';
import { validEmail } from '@/utils/validate'; import { validEmail } from '@/utils/validate';
export default { export default {
name: 'Login', name: 'Login',
components: { LangSelect }, components: { LangSelect },
...@@ -74,6 +83,7 @@ export default { ...@@ -74,6 +83,7 @@ export default {
loading: false, loading: false,
pwdType: 'password', pwdType: 'password',
redirect: undefined, redirect: undefined,
activeName: 'second',
}; };
}, },
watch: { watch: {
...@@ -85,6 +95,9 @@ export default { ...@@ -85,6 +95,9 @@ export default {
}, },
}, },
methods: { methods: {
handleClick(tab, event) {
console.log(tab, event);
},
showPwd() { showPwd() {
if (this.pwdType === 'password') { if (this.pwdType === 'password') {
this.pwdType = ''; this.pwdType = '';
...@@ -165,6 +178,18 @@ $light_gray:#eee; ...@@ -165,6 +178,18 @@ $light_gray:#eee;
max-width: 100%; max-width: 100%;
padding: 35px 35px 15px 35px; padding: 35px 35px 15px 35px;
margin: 120px auto; margin: 120px auto;
.el-tabs__item {
padding: 0 20px;
height: 40px;
box-sizing: border-box;
line-height: 40px;
display: inline-block;
list-style: none;
font-size: 14px;
font-weight: 500;
color: #fff;
position: relative;
}
} }
.tips { .tips {
font-size: 14px; font-size: 14px;
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
</el-table-column> </el-table-column>
<el-table-column label="用户头像" align="center" width="120"> <el-table-column label="用户头像" align="center" width="120">
<template slot-scope="scope"> <template slot-scope="scope">
<el-image :src="scope.row.headimgurl":fit="fit"></el-image> <el-image :src="scope.row.headimgurl" :fit="fit"></el-image>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="用户名称" width="130px" align="center"> <el-table-column label="用户名称" width="130px" align="center">
...@@ -199,7 +199,7 @@ export default { ...@@ -199,7 +199,7 @@ export default {
title: undefined, title: undefined,
type: undefined, type: undefined,
sort: '+id', sort: '+id',
fits: ['fill', 'contain', 'cover', 'none', 'scale-down'], fits: ['fill', 'contain', 'cover', 'none', 'scale-down'],
}, },
calendarTypeOptions, calendarTypeOptions,
sortOptions: [{ label: 'ID Ascending', key: '+id' }, { label: 'ID Descending', key: '-id' }], sortOptions: [{ label: 'ID Ascending', key: '+id' }, { label: 'ID Descending', key: '-id' }],
......
...@@ -16,6 +16,7 @@ use \App\Laravue\JsonResponse; ...@@ -16,6 +16,7 @@ use \App\Laravue\JsonResponse;
*/ */
Route::post('auth/login', 'AuthController@login'); Route::post('auth/login', 'AuthController@login');
Route::post('auth/userslogin', 'AuthController@userslogin');
Route::group(['middleware' => 'auth:api'], function () { Route::group(['middleware' => 'auth:api'], function () {
Route::get('auth/user', 'AuthController@user'); Route::get('auth/user', 'AuthController@user');
Route::post('auth/logout', 'AuthController@logout'); Route::post('auth/logout', 'AuthController@logout');
...@@ -32,6 +33,8 @@ Route::group(['middleware' => 'auth:api'], function () { ...@@ -32,6 +33,8 @@ Route::group(['middleware' => 'auth:api'], function () {
Route::post('user/deleteuser','UserController@deleteuser')->middleware('permission:' . \App\Laravue\Acl::PERMISSION_PERMISSION_MANAGE);//删除用户 Route::post('user/deleteuser','UserController@deleteuser')->middleware('permission:' . \App\Laravue\Acl::PERMISSION_PERMISSION_MANAGE);//删除用户
Route::match(['get','post'],'user/Upuser','UserController@Upuser')->middleware('permission:' . \App\Laravue\Acl::PERMISSION_PERMISSION_MANAGE);//更新用户 Route::match(['get','post'],'user/Upuser','UserController@Upuser')->middleware('permission:' . \App\Laravue\Acl::PERMISSION_PERMISSION_MANAGE);//更新用户
Route::match(['get','post'],'user/areachina','UserController@areachina')->middleware('permission:' . \App\Laravue\Acl::PERMISSION_PERMISSION_MANAGE);//获取地址列表 Route::match(['get','post'],'user/areachina','UserController@areachina')->middleware('permission:' . \App\Laravue\Acl::PERMISSION_PERMISSION_MANAGE);//获取地址列表
Route::post('user/addcontactsuser','UserController@addcontactsuser')->middleware('permission:' . \App\Laravue\Acl::PERMISSION_PERMISSION_MANAGE);//添加联系人
Route::get('user/contactslist','UserController@contactslist');
}); });
//设备路由 //设备路由
...@@ -40,6 +43,7 @@ Route::group(['middleware'=>'auth:api'],function (){ ...@@ -40,6 +43,7 @@ Route::group(['middleware'=>'auth:api'],function (){
Route::get('devices/devicetype','DevicesController@devicetype');//设备类型 Route::get('devices/devicetype','DevicesController@devicetype');//设备类型
Route::post('devices/deletedecice','DevicesController@deletedecice')->middleware('permission:' . \App\Laravue\Acl::PERMISSION_PERMISSION_MANAGE);//删除设备 Route::post('devices/deletedecice','DevicesController@deletedecice')->middleware('permission:' . \App\Laravue\Acl::PERMISSION_PERMISSION_MANAGE);//删除设备
Route::post('devices/adddevice','DevicesController@adddevice')->middleware('permission:' . \App\Laravue\Acl::PERMISSION_PERMISSION_MANAGE);//新增设备 Route::post('devices/adddevice','DevicesController@adddevice')->middleware('permission:' . \App\Laravue\Acl::PERMISSION_PERMISSION_MANAGE);//新增设备
Route::match(['get','post'],'device/physicsdelete','DevicesController@physicsdelete')->middleware('permission:' . \App\Laravue\Acl::PERMISSION_PERMISSION_MANAGE);//返回设备列表和更改设备
}); });
// Fake APIs // Fake APIs
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment