Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
yudao-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
hblj
yudao-cloud
Commits
8a804d65
提交
8a804d65
authored
3月 04, 2019
作者:
sin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
- 添加菜单权限控制
- url 权限控制
上级
17e1a017
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
41 行增加
和
29 行删除
+41
-29
user.js
admin-web/mock/user.js
+15
-17
login.js
admin-web/src/models/login.js
+9
-1
Authorized.js
admin-web/src/pages/Authorized.js
+11
-5
Login.js
admin-web/src/pages/User/Login.js
+5
-5
api.js
admin-web/src/services/api.js
+1
-1
没有找到文件。
admin-web/mock/user.js
浏览文件 @
8a804d65
// 代码中会兼容本地 service mock 以及部署站点的静态数据
// 代码中会兼容本地 service mock 以及部署站点的静态数据
// import { stringify } from 'qs';
export
default
{
export
default
{
// 支持值为 Object 和 Array
// 支持值为 Object 和 Array
'GET /api/currentUser'
:
{
'GET /api/currentUser'
:
{
...
@@ -72,28 +74,24 @@ export default {
...
@@ -72,28 +74,24 @@ export default {
address
:
'Sidney No. 1 Lake Park'
,
address
:
'Sidney No. 1 Lake Park'
,
},
},
],
],
'POST /a
pi/login/account
'
:
(
req
,
res
)
=>
{
'POST /a
dmin-api/admin/passport/login
'
:
(
req
,
res
)
=>
{
const
{
password
,
user
Name
,
typ
e
}
=
req
.
body
;
const
{
password
,
user
nam
e
}
=
req
.
body
;
if
(
password
===
'a
nt.design'
&&
userN
ame
===
'admin'
)
{
if
(
password
===
'a
dmin'
&&
usern
ame
===
'admin'
)
{
res
.
send
({
res
.
send
({
status
:
'ok'
,
code
:
0
,
type
,
data
:
{
currentAuthority
:
'admin'
,
accessToken
:
'2e3d7635c15e47e997611707a237859f'
,
});
expiresIn
:
2879
,
return
;
refreshToken
:
'd091e7c35bbb4313b0f557a6ef23d033'
,
}
},
if
(
password
===
'ant.design'
&&
userName
===
'user'
)
{
message
:
'string'
,
res
.
send
({
status
:
'ok'
,
type
,
currentAuthority
:
'user'
,
});
});
return
;
return
;
}
}
res
.
send
({
res
.
send
({
status
:
'error'
,
code
:
1000
,
type
,
data
:
{}
,
currentAuthority
:
'guest
'
,
message
:
'账号或密码错误!
'
,
});
});
},
},
'POST /api/register'
:
(
req
,
res
)
=>
{
'POST /api/register'
:
(
req
,
res
)
=>
{
...
...
admin-web/src/models/login.js
浏览文件 @
8a804d65
...
@@ -4,6 +4,7 @@ import { fakeAccountLogin, getFakeCaptcha } from '@/services/api';
...
@@ -4,6 +4,7 @@ import { fakeAccountLogin, getFakeCaptcha } from '@/services/api';
import
{
setAuthority
}
from
'@/utils/authority'
;
import
{
setAuthority
}
from
'@/utils/authority'
;
import
{
getPageQuery
}
from
'@/utils/utils'
;
import
{
getPageQuery
}
from
'@/utils/utils'
;
import
{
reloadAuthorized
}
from
'@/utils/Authorized'
;
import
{
reloadAuthorized
}
from
'@/utils/Authorized'
;
import
{
setLoginToken
}
from
'../utils/cache'
;
export
default
{
export
default
{
namespace
:
'login'
,
namespace
:
'login'
,
...
@@ -19,8 +20,15 @@ export default {
...
@@ -19,8 +20,15 @@ export default {
type
:
'changeLoginStatus'
,
type
:
'changeLoginStatus'
,
payload
:
response
,
payload
:
response
,
});
});
yield
put
(
routerRedux
.
replace
(
'/'
));
// Login successfully
// Login successfully
if
(
response
.
status
===
'ok'
)
{
if
(
response
.
code
===
0
)
{
// 保存 token 到 localStorage,发送请求的时候,会自动取 token 放到 header
setLoginToken
(
response
.
data
.
accessToken
,
response
.
data
.
refreshToken
);
// 此处直接设置为 admin、和 user 角色,因为暂时不做服务控制前段 角色
setAuthority
([
'admin'
,
'user'
]);
reloadAuthorized
();
reloadAuthorized
();
const
urlParams
=
new
URL
(
window
.
location
.
href
);
const
urlParams
=
new
URL
(
window
.
location
.
href
);
const
params
=
getPageQuery
();
const
params
=
getPageQuery
();
...
...
admin-web/src/pages/Authorized.js
浏览文件 @
8a804d65
...
@@ -4,10 +4,16 @@ import { getAuthority } from '@/utils/authority';
...
@@ -4,10 +4,16 @@ import { getAuthority } from '@/utils/authority';
import
Redirect
from
'umi/redirect'
;
import
Redirect
from
'umi/redirect'
;
const
Authority
=
getAuthority
();
const
Authority
=
getAuthority
();
// TODO RenderAuthorized 暂时写死为 admin,次组件集成于 antd-pro 后期有时间处理,(可能有用,可能没用)
// TODO 可大致分为两种角色,admin 管理员角色,user 代表其他非授权页面,可以公开的
// const Authorized = RenderAuthorized(['admin', 'user']);
const
Authorized
=
RenderAuthorized
(
Authority
);
const
Authorized
=
RenderAuthorized
(
Authority
);
export
default
({
children
})
=>
(
export
default
({
children
})
=>
{
<
Authorized
authority
=
{
children
.
props
.
route
.
authority
}
noMatch
=
{
<
Redirect
to
=
"/user/login"
/>
}
>
return
(
{
children
}
<
Authorized
authority
=
{
children
.
props
.
route
.
authority
}
noMatch
=
{
<
Redirect
to
=
"/user/login"
/>
}
>
<
/Authorized
>
{
children
}
);
<
/Authorized
>
);
};
admin-web/src/pages/User/Login.js
浏览文件 @
8a804d65
...
@@ -24,7 +24,7 @@ class LoginPage extends Component {
...
@@ -24,7 +24,7 @@ class LoginPage extends Component {
onGetCaptcha
=
()
=>
onGetCaptcha
=
()
=>
new
Promise
((
resolve
,
reject
)
=>
{
new
Promise
((
resolve
,
reject
)
=>
{
this
.
loginForm
.
validateFields
([
'
mobil
e'
],
{},
(
err
,
values
)
=>
{
this
.
loginForm
.
validateFields
([
'
usernam
e'
],
{},
(
err
,
values
)
=>
{
if
(
err
)
{
if
(
err
)
{
reject
(
err
);
reject
(
err
);
}
else
{
}
else
{
...
@@ -82,7 +82,7 @@ class LoginPage extends Component {
...
@@ -82,7 +82,7 @@ class LoginPage extends Component {
!
submitting
&&
!
submitting
&&
this
.
renderMessage
(
formatMessage
({
id
:
'app.login.message-invalid-credentials'
}))}
this
.
renderMessage
(
formatMessage
({
id
:
'app.login.message-invalid-credentials'
}))}
<
UserName
<
UserName
name
=
"user
N
ame"
name
=
"user
n
ame"
placeholder
=
{
`
${
formatMessage
({
id
:
'app.login.userName'
})}
: admin or user`
}
placeholder
=
{
`
${
formatMessage
({
id
:
'app.login.userName'
})}
: admin or user`
}
rules
=
{[
rules
=
{[
{
{
...
@@ -93,7 +93,7 @@ class LoginPage extends Component {
...
@@ -93,7 +93,7 @@ class LoginPage extends Component {
/
>
/
>
<
Password
<
Password
name
=
"password"
name
=
"password"
placeholder
=
{
`
${
formatMessage
({
id
:
'app.login.password'
})}
: a
nt.desig
n`
}
placeholder
=
{
`
${
formatMessage
({
id
:
'app.login.password'
})}
: a
dmi
n`
}
rules
=
{[
rules
=
{[
{
{
required
:
true
,
required
:
true
,
...
@@ -114,7 +114,7 @@ class LoginPage extends Component {
...
@@ -114,7 +114,7 @@ class LoginPage extends Component {
formatMessage
({
id
:
'app.login.message-invalid-verification-code'
})
formatMessage
({
id
:
'app.login.message-invalid-verification-code'
})
)}
)}
<
Mobile
<
Mobile
name
=
"
mobil
e"
name
=
"
usernam
e"
placeholder
=
{
formatMessage
({
id
:
'form.phone-number.placeholder'
})}
placeholder
=
{
formatMessage
({
id
:
'form.phone-number.placeholder'
})}
rules
=
{[
rules
=
{[
{
{
...
@@ -128,7 +128,7 @@ class LoginPage extends Component {
...
@@ -128,7 +128,7 @@ class LoginPage extends Component {
]}
]}
/
>
/
>
<
Captcha
<
Captcha
name
=
"
captcha
"
name
=
"
password
"
placeholder
=
{
formatMessage
({
id
:
'form.verification-code.placeholder'
})}
placeholder
=
{
formatMessage
({
id
:
'form.verification-code.placeholder'
})}
countDown
=
{
120
}
countDown
=
{
120
}
onGetCaptcha
=
{
this
.
onGetCaptcha
}
onGetCaptcha
=
{
this
.
onGetCaptcha
}
...
...
admin-web/src/services/api.js
浏览文件 @
8a804d65
...
@@ -104,7 +104,7 @@ export async function updateFakeList(params) {
...
@@ -104,7 +104,7 @@ export async function updateFakeList(params) {
}
}
export
async
function
fakeAccountLogin
(
params
)
{
export
async
function
fakeAccountLogin
(
params
)
{
return
request
(
'/api/login/account'
,
{
return
request
(
`/admin-api/admin/passport/login/?
${
stringify
(
params
)}
`
,
{
method
:
'POST'
,
method
:
'POST'
,
body
:
params
,
body
:
params
,
});
});
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论