parent
bbaee61961
commit
1e119bab84
|
@ -19,9 +19,7 @@ yylAdmin是一个基于ThinkPHP6和Vue2极简后台管理系统,只有登录
|
|||
- 内容管理
|
||||
- 文件管理
|
||||
- 设置管理
|
||||
- 权限管理
|
||||
- 系统管理
|
||||
- 数据库管理
|
||||
- 系统管理:权限管理...
|
||||
- 代码生成器
|
||||
- Excel导出导入
|
||||
- 接口文档与调试...
|
||||
|
@ -42,9 +40,9 @@ yylAdmin是一个基于ThinkPHP6和Vue2极简后台管理系统,只有登录
|
|||
- PHP >= 7.2.5
|
||||
安装 fileinfo、redis 扩展
|
||||
开启 putenv、proc_open 函数
|
||||
- MySQL >= 5.5
|
||||
- MySQL >= 5.6
|
||||
- Redis
|
||||
- node >= 12.0.0
|
||||
- node >= 14.0.0
|
||||
- npm >= 6.9.0
|
||||
|
||||
### 安装后端
|
||||
|
|
|
@ -3,7 +3,7 @@ import request from '@/utils/request'
|
|||
const url = '/admin/content.Category/'
|
||||
/**
|
||||
* 内容分类列表
|
||||
* @param {array} data 请求数据
|
||||
* @param {array} params 请求参数
|
||||
*/
|
||||
export function list(params) {
|
||||
return request({
|
||||
|
|
|
@ -423,7 +423,7 @@ import Pagination from '@/components/Pagination'
|
|||
import clip from '@/utils/clipboard'
|
||||
import store from '@/store'
|
||||
import { arrayColumn } from '@/utils/index'
|
||||
import { getUserToken } from '@/utils/auth'
|
||||
import { getAdminToken } from '@/utils/auth'
|
||||
import { list, info, add, edit, dele, editgroup, edittag, edittype, editdomain, disable, recycle, recycleReco, recycleDele } from '@/api/file/file'
|
||||
import { info as groupInfo, add as groupAdd, edit as groupEdit, dele as groupDele } from '@/api/file/group'
|
||||
import { info as tagInfo, add as tagAdd, edit as tagEdit, dele as tagDele } from '@/api/file/tag'
|
||||
|
@ -563,7 +563,7 @@ export default {
|
|||
this.list()
|
||||
const tokenType = store.getters.tokenType
|
||||
const tokenName = store.getters.tokenName
|
||||
const tokenValue = getUserToken()
|
||||
const tokenValue = getAdminToken()
|
||||
if (tokenType === 'header') {
|
||||
const uploadHeaders = {}
|
||||
uploadHeaders[tokenName] = tokenValue
|
||||
|
|
|
@ -3,7 +3,7 @@ import store from './store'
|
|||
import { Message } from 'element-ui'
|
||||
import NProgress from 'nprogress' // 进度条
|
||||
import 'nprogress/nprogress.css' // 进度条样式
|
||||
import { getUserToken } from '@/utils/auth' // 从cookie中获取token
|
||||
import { getAdminToken } from '@/utils/auth' // 从cookie中获取token
|
||||
import getPageTitle from '@/utils/page-title'
|
||||
import Layout from '@/layout'
|
||||
|
||||
|
@ -29,7 +29,7 @@ router.beforeEach(async(to, from, next) => {
|
|||
document.title = getPageTitle(to.meta.title)
|
||||
|
||||
// 判断用户是否已登录
|
||||
const hasToken = getUserToken()
|
||||
const hasToken = getAdminToken()
|
||||
|
||||
if (hasToken) {
|
||||
if (to.path === '/login') {
|
||||
|
@ -61,7 +61,7 @@ router.beforeEach(async(to, from, next) => {
|
|||
next({ ...to, replace: true })
|
||||
} catch (error) {
|
||||
// 删除token并转到登录页面重新登录
|
||||
await store.dispatch('user/resetUserToken')
|
||||
await store.dispatch('user/resetAdminToken')
|
||||
Message.error(error || 'Has Error')
|
||||
next(`/login?redirect=${to.path}`)
|
||||
NProgress.done()
|
||||
|
|
|
@ -23,15 +23,15 @@ module.exports = {
|
|||
*/
|
||||
sidebarLogo: true,
|
||||
|
||||
/**
|
||||
* @type {string} 前后端必须一致
|
||||
* @description token名称
|
||||
*/
|
||||
tokenName: 'AdminToken',
|
||||
|
||||
/**
|
||||
* @type {string} header、param
|
||||
* @description token方式
|
||||
*/
|
||||
tokenType: 'param'
|
||||
tokenType: 'param',
|
||||
|
||||
/**
|
||||
* @type {string} 前后端必须一致
|
||||
* @description token名称
|
||||
*/
|
||||
tokenName: 'AdminToken'
|
||||
}
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import { login, logout } from '@/api/system/login'
|
||||
import { info as userInfo } from '@/api/system/user-center'
|
||||
import {
|
||||
setUserToken,
|
||||
getUserToken,
|
||||
delUserToken,
|
||||
setAdminToken,
|
||||
getAdminToken,
|
||||
delAdminToken,
|
||||
setUsername,
|
||||
delUsername,
|
||||
setNickname,
|
||||
|
@ -15,7 +15,7 @@ import { getTokenName } from '@/utils/settings'
|
|||
import router, { resetRouter } from '@/router'
|
||||
|
||||
const state = {
|
||||
userToken: getUserToken(),
|
||||
userToken: getAdminToken(),
|
||||
username: '',
|
||||
nickname: '',
|
||||
avatar: '',
|
||||
|
@ -64,7 +64,7 @@ const actions = {
|
|||
}).then(response => {
|
||||
const { data } = response
|
||||
commit('SET_USERTOKEN', data[getTokenName()])
|
||||
setUserToken(data[getTokenName()])
|
||||
setAdminToken(data[getTokenName()])
|
||||
resolve()
|
||||
}).catch(error => {
|
||||
reject(error)
|
||||
|
@ -120,7 +120,7 @@ const actions = {
|
|||
commit('SET_AVATAR', '')
|
||||
commit('SET_ROLES', [])
|
||||
commit('SET_MENUS', [])
|
||||
delUserToken()
|
||||
delAdminToken()
|
||||
delUsername()
|
||||
delNickname()
|
||||
delAvatar()
|
||||
|
@ -137,11 +137,11 @@ const actions = {
|
|||
},
|
||||
|
||||
// 重置token
|
||||
resetUserToken({ commit }) {
|
||||
resetAdminToken({ commit }) {
|
||||
return new Promise(resolve => {
|
||||
commit('SET_USERTOKEN', '')
|
||||
commit('SET_ROLES', [])
|
||||
delUserToken()
|
||||
delAdminToken()
|
||||
resolve()
|
||||
})
|
||||
},
|
||||
|
@ -151,7 +151,7 @@ const actions = {
|
|||
const userToken = role + '-userToken'
|
||||
|
||||
commit('SET_USERTOKEN', userToken)
|
||||
setUserToken(userToken)
|
||||
setAdminToken(userToken)
|
||||
|
||||
const { roles } = await dispatch('userInfo')
|
||||
|
||||
|
|
|
@ -1,46 +1,46 @@
|
|||
import Cookies from 'js-cookie'
|
||||
const key_prefix = 'yaAuth'
|
||||
const keyPrefix = 'yaAuth'
|
||||
|
||||
const UserTokenKey = key_prefix + 'UserToken'
|
||||
export function setUserToken(UserToken) {
|
||||
return Cookies.set(UserTokenKey, UserToken)
|
||||
const adminTokenKey = keyPrefix + 'AdminToken'
|
||||
export function setAdminToken(adminToken) {
|
||||
return Cookies.set(adminTokenKey, adminToken)
|
||||
}
|
||||
export function getUserToken() {
|
||||
return Cookies.get(UserTokenKey)
|
||||
export function getAdminToken() {
|
||||
return Cookies.get(adminTokenKey)
|
||||
}
|
||||
export function delUserToken() {
|
||||
return Cookies.remove(UserTokenKey)
|
||||
export function delAdminToken() {
|
||||
return Cookies.remove(adminTokenKey)
|
||||
}
|
||||
|
||||
const UsernameKey = key_prefix + 'Username'
|
||||
const usernameKey = keyPrefix + 'Username'
|
||||
export function setUsername(username) {
|
||||
return Cookies.set(UsernameKey, username)
|
||||
return Cookies.set(usernameKey, username)
|
||||
}
|
||||
export function getUsername() {
|
||||
return Cookies.get(UsernameKey)
|
||||
return Cookies.get(usernameKey)
|
||||
}
|
||||
export function delUsername() {
|
||||
return Cookies.remove(UsernameKey)
|
||||
return Cookies.remove(usernameKey)
|
||||
}
|
||||
|
||||
const NicknameKey = key_prefix + 'Nickname'
|
||||
const nicknameKey = keyPrefix + 'Nickname'
|
||||
export function setNickname(nickname) {
|
||||
return Cookies.set(NicknameKey, nickname)
|
||||
return Cookies.set(nicknameKey, nickname)
|
||||
}
|
||||
export function getNickname() {
|
||||
return Cookies.get(NicknameKey)
|
||||
return Cookies.get(nicknameKey)
|
||||
}
|
||||
export function delNickname() {
|
||||
return Cookies.remove(NicknameKey)
|
||||
return Cookies.remove(nicknameKey)
|
||||
}
|
||||
|
||||
const AvatarKey = key_prefix + 'Avatar'
|
||||
const avatarKey = keyPrefix + 'Avatar'
|
||||
export function setAvatar(avatar) {
|
||||
return Cookies.set(AvatarKey, avatar)
|
||||
return Cookies.set(avatarKey, avatar)
|
||||
}
|
||||
export function getAvatar() {
|
||||
return Cookies.get(AvatarKey)
|
||||
return Cookies.get(avatarKey)
|
||||
}
|
||||
export function delAvatar() {
|
||||
return Cookies.remove(AvatarKey)
|
||||
return Cookies.remove(avatarKey)
|
||||
}
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
import store from '@/store'
|
||||
|
||||
// 获取页面标题
|
||||
/**
|
||||
* 获取页面标题
|
||||
* @param {string} pageName 页面名称
|
||||
* @returns {string}
|
||||
*/
|
||||
export default function getPageTitle(pageName) {
|
||||
const pageTitle = store.getters.pageTitle
|
||||
if (pageName) {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import axios from 'axios'
|
||||
import store from '@/store'
|
||||
import { Message, MessageBox } from 'element-ui'
|
||||
import { getUserToken } from '@/utils/auth'
|
||||
import { getAdminToken } from '@/utils/auth'
|
||||
|
||||
// 创建axios实例
|
||||
const service = axios.create({
|
||||
|
@ -18,7 +18,7 @@ service.interceptors.request.use(
|
|||
// 设置Token,请求头部header或请求参数param
|
||||
const tokenType = store.getters.tokenType
|
||||
const tokenName = store.getters.tokenName
|
||||
const tokenValue = getUserToken()
|
||||
const tokenValue = getAdminToken()
|
||||
if (tokenType === 'header') {
|
||||
// 请求头部token
|
||||
config.headers[tokenName] = tokenValue
|
||||
|
@ -92,7 +92,7 @@ function responseHandle(res) {
|
|||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
store.dispatch('user/resetUserToken').then(() => {
|
||||
store.dispatch('user/resetAdminToken').then(() => {
|
||||
location.reload()
|
||||
})
|
||||
}).catch(() => { })
|
||||
|
|
|
@ -1,79 +1,79 @@
|
|||
import Cookies from 'js-cookie'
|
||||
const key_prefix = 'yaSettings'
|
||||
const keyPrefix = 'yaSettings'
|
||||
|
||||
const SystemNameKey = key_prefix + 'SystemName'
|
||||
export function setSystemName(SystemName) {
|
||||
return Cookies.set(SystemNameKey, SystemName)
|
||||
const systemNameKey = keyPrefix + 'SystemName'
|
||||
export function setSystemName(systemName) {
|
||||
return Cookies.set(systemNameKey, systemName)
|
||||
}
|
||||
export function getSystemName() {
|
||||
return Cookies.get(SystemNameKey)
|
||||
return Cookies.get(systemNameKey)
|
||||
}
|
||||
export function delSystemName() {
|
||||
return Cookies.remove(SystemNameKey)
|
||||
return Cookies.remove(systemNameKey)
|
||||
}
|
||||
|
||||
const FaviconUrlKey = key_prefix + 'FaviconUrl'
|
||||
export function setFaviconUrl(FaviconUrl) {
|
||||
return Cookies.set(FaviconUrlKey, FaviconUrl)
|
||||
const faviconUrlKey = keyPrefix + 'FaviconUrl'
|
||||
export function setFaviconUrl(faviconUrl) {
|
||||
return Cookies.set(faviconUrlKey, faviconUrl)
|
||||
}
|
||||
export function getFaviconUrl() {
|
||||
return Cookies.get(FaviconUrlKey)
|
||||
return Cookies.get(faviconUrlKey)
|
||||
}
|
||||
export function delFaviconUrl() {
|
||||
return Cookies.remove(FaviconUrlKey)
|
||||
return Cookies.remove(faviconUrlKey)
|
||||
}
|
||||
|
||||
const PageTitleKey = key_prefix + 'PageTitle'
|
||||
export function setPageTitle(PageTitle) {
|
||||
return Cookies.set(PageTitleKey, PageTitle)
|
||||
const pageTitleKey = keyPrefix + 'PageTitle'
|
||||
export function setPageTitle(pageTitle) {
|
||||
return Cookies.set(pageTitleKey, pageTitle)
|
||||
}
|
||||
export function getPageTitle() {
|
||||
return Cookies.get(PageTitleKey)
|
||||
return Cookies.get(pageTitleKey)
|
||||
}
|
||||
export function delPageTitle() {
|
||||
return Cookies.remove(PageTitleKey)
|
||||
return Cookies.remove(pageTitleKey)
|
||||
}
|
||||
|
||||
const LogoUrlKey = key_prefix + 'LogoUrl'
|
||||
export function setLogoUrl(LogoUrl) {
|
||||
return Cookies.set(LogoUrlKey, LogoUrl)
|
||||
const logoUrlKey = keyPrefix + 'LogoUrl'
|
||||
export function setLogoUrl(logoUrl) {
|
||||
return Cookies.set(logoUrlKey, logoUrl)
|
||||
}
|
||||
export function getLogoUrl() {
|
||||
return Cookies.get(LogoUrlKey)
|
||||
return Cookies.get(logoUrlKey)
|
||||
}
|
||||
export function delLogoUrl() {
|
||||
return Cookies.remove(LogoUrlKey)
|
||||
return Cookies.remove(logoUrlKey)
|
||||
}
|
||||
|
||||
const NoticeKey = key_prefix + 'Notice'
|
||||
const noticeKey = keyPrefix + 'Notice'
|
||||
export function setNotice(notice) {
|
||||
return Cookies.set(NoticeKey, notice)
|
||||
return Cookies.set(noticeKey, notice)
|
||||
}
|
||||
export function getNotice() {
|
||||
return Cookies.get(NoticeKey)
|
||||
return Cookies.get(noticeKey)
|
||||
}
|
||||
export function delNotice() {
|
||||
return Cookies.remove(NoticeKey)
|
||||
return Cookies.remove(noticeKey)
|
||||
}
|
||||
|
||||
const TokenNameKey = key_prefix + 'TokenName'
|
||||
export function setTokenName(TokenName) {
|
||||
return Cookies.set(TokenNameKey, TokenName)
|
||||
const tokenNameKey = keyPrefix + 'TokenName'
|
||||
export function setTokenName(tokenName) {
|
||||
return Cookies.set(tokenNameKey, tokenName)
|
||||
}
|
||||
export function getTokenName() {
|
||||
return Cookies.get(TokenNameKey)
|
||||
return Cookies.get(tokenNameKey)
|
||||
}
|
||||
export function delTokenName() {
|
||||
return Cookies.remove(TokenNameKey)
|
||||
return Cookies.remove(tokenNameKey)
|
||||
}
|
||||
|
||||
const TokenTypeKey = key_prefix + 'TokenType'
|
||||
export function setTokenType(TokenType) {
|
||||
return Cookies.set(TokenTypeKey, TokenType)
|
||||
const tokenTypeKey = keyPrefix + 'TokenType'
|
||||
export function setTokenType(tokenType) {
|
||||
return Cookies.set(tokenTypeKey, tokenType)
|
||||
}
|
||||
export function getTokenType() {
|
||||
return Cookies.get(TokenTypeKey)
|
||||
return Cookies.get(tokenTypeKey)
|
||||
}
|
||||
export function delTokenType() {
|
||||
return Cookies.remove(TokenTypeKey)
|
||||
return Cookies.remove(tokenTypeKey)
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<el-card class="dialog-body" :style="{height:height+'px'}">
|
||||
<el-row :gutter="0">
|
||||
<el-col :span="12">
|
||||
<el-row>
|
||||
<el-col :span="14">
|
||||
<el-form ref="ref" :model="model" :rules="rules" label-width="120px">
|
||||
<el-form-item label="会员接口" prop="is_member_api">
|
||||
<el-col :span="24">
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<el-card class="dialog-body" :style="{height:height+'px'}">
|
||||
<el-row :gutter="0">
|
||||
<el-col :span="12">
|
||||
<el-row>
|
||||
<el-col :span="14">
|
||||
<el-form ref="ref" :model="model" :rules="rules" label-width="120px">
|
||||
<el-form-item label="注册验证码" prop="captcha_register">
|
||||
<el-col :span="8">
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<el-card class="dialog-body" :style="{height:height+'px'}">
|
||||
<el-row :gutter="0">
|
||||
<el-row>
|
||||
<el-col :span="16">
|
||||
<el-form ref="ref" :model="model" :rules="rules" label-width="120px">
|
||||
<el-form-item label="自定义设置" prop="">
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<el-card class="dialog-body" :style="{height:height+'px'}">
|
||||
<el-row :gutter="0">
|
||||
<el-col :span="12">
|
||||
<el-row>
|
||||
<el-col :span="14">
|
||||
<el-form ref="ref" :model="model" :rules="rules" label-width="120px">
|
||||
<el-form-item label="日志记录开关" prop="log_switch">
|
||||
<el-col :span="8">
|
||||
|
|
|
@ -1,12 +1,20 @@
|
|||
<template>
|
||||
<el-card class="dialog-body" :style="{height:height+'px'}">
|
||||
<el-row :gutter="0">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form ref="ref" :model="model" :rules="rules" label-width="120px">
|
||||
<el-form-item label="注册" prop="is_register">
|
||||
<el-col :span="8">
|
||||
<el-switch v-model="model.is_register" :active-value="1" :inactive-value="0" />
|
||||
</el-col>
|
||||
<el-col :span="16">
|
||||
关闭后,不能再注册(用户名、手机、邮箱)
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="登录" prop="is_login">
|
||||
<el-col :span="8">
|
||||
<el-switch v-model="model.is_login" :active-value="1" :inactive-value="0" />
|
||||
</el-col>
|
||||
<el-col :span="16">
|
||||
关闭后,不能再登录(用户名、手机、邮箱)
|
||||
</el-col>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<el-card class="dialog-body" :style="{height:height+'px'}">
|
||||
<el-row :gutter="0">
|
||||
<el-col :span="12">
|
||||
<el-row>
|
||||
<el-col :span="14">
|
||||
<el-form ref="ref" :model="model" :rules="rules" label-width="120px">
|
||||
<el-form-item label="Token密钥" prop="token_key">
|
||||
<el-col :span="8">
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<el-card class="dialog-body" :style="{height:height+'px'}">
|
||||
<el-row :gutter="0">
|
||||
<el-col :span="13">
|
||||
<el-row>
|
||||
<el-col :span="14">
|
||||
<el-form ref="ref" :model="model" :rules="rules" label-width="120px">
|
||||
<el-form-item label="接口速率">
|
||||
<el-col :span="12">
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<el-card class="dialog-body" :style="{height:height+'px'}">
|
||||
<el-row>
|
||||
<el-col :span="13">
|
||||
<el-col :span="14">
|
||||
<el-form ref="ref" :model="model" :rules="rules" label-width="120px">
|
||||
<el-form-item label="缓存类型" prop="cache_type">
|
||||
<el-col :span="8">
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<el-card class="dialog-body" :style="{height:height+'px'}">
|
||||
<el-row>
|
||||
<el-col :span="13">
|
||||
<el-col :span="14">
|
||||
<el-form ref="ref" :model="model" :rules="rules" label-width="120px">
|
||||
<el-form-item label="验证码开关" prop="captcha_switch">
|
||||
<el-col :span="8">
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<el-card class="dialog-body" :style="{height:height+'px'}">
|
||||
<el-row :gutter="0">
|
||||
<el-col :span="13">
|
||||
<el-row>
|
||||
<el-col :span="14">
|
||||
<el-form ref="ref" :model="model" :rules="rules" label-width="120px">
|
||||
<el-form-item label="* SMTP服务器" prop="email_host">
|
||||
<el-col :span="8">
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<el-card class="dialog-body" :style="{height:height+'px'}">
|
||||
<el-row :gutter="0">
|
||||
<el-col :span="13">
|
||||
<el-row>
|
||||
<el-col :span="14">
|
||||
<el-form ref="ref" :model="model" :rules="rules" label-width="120px">
|
||||
<el-form-item label="日志记录开关" prop="log_switch">
|
||||
<el-col :span="8">
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<el-card class="dialog-body" :style="{height:height+'px'}">
|
||||
<el-row :gutter="0">
|
||||
<el-col :span="13">
|
||||
<el-row>
|
||||
<el-col :span="14">
|
||||
<el-form ref="ref" :model="model" :rules="rules" label-width="120px">
|
||||
<el-form-item label="* 系统简称" prop="system_name">
|
||||
<el-col :span="8">
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<el-card class="dialog-body" :style="{height:height+'px'}">
|
||||
<el-row>
|
||||
<el-col :span="13">
|
||||
<el-col :span="14">
|
||||
<el-form ref="ref" :model="model" :rules="rules" label-width="120px">
|
||||
<el-form-item label="Token密钥" prop="token_key">
|
||||
<el-col :span="8">
|
||||
|
|
Loading…
Reference in New Issue