Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Z
zhichan
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
蒋勇
zhichan
Commits
e63772b2
Commit
e63772b2
authored
Apr 24, 2020
by
蒋勇
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
d
parent
81cca563
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
106 additions
and
35 deletions
+106
-35
center-manage/app/base/api/api.base.js
+2
-1
center-manage/app/base/controller/ctl.base.js
+3
-2
center-manage/app/base/controller/impl/auth/userCtl.js
+60
-17
center-manage/app/base/service/impl/auth/userSve.js
+41
-15
No files found.
center-manage/app/base/api/api.base.js
View file @
e63772b2
...
...
@@ -15,7 +15,8 @@ class APIBase{
companyid
:
custtags
[
0
].
split
(
"_"
)[
1
],
password
:
custtags
[
1
].
split
(
"_"
)[
1
],
username
:
req
.
headers
[
"x-consumer-username"
],
credid
:
req
.
headers
[
"x-credential-identifier"
]
credid
:
req
.
headers
[
"x-credential-identifier"
],
companykey
:
req
.
headers
[
"x-company-key"
],
}
var
rtn
=
await
this
[
methodname
](
pobj
,
query
,
req
);
return
rtn
;
...
...
center-manage/app/base/controller/ctl.base.js
View file @
e63772b2
...
...
@@ -27,11 +27,12 @@ class CtlBase {
async
setContextParams
(
pobj
,
qobj
,
req
)
{
let
custtags
=
req
.
headers
[
"x-consumetag"
]?
req
.
headers
[
"x-consumetag"
].
split
(
"|"
):
null
;
req
.
xctx
=
{
appkey
:
req
.
headers
[
"x-appkey"
],
appkey
:
req
.
headers
[
"x-app
-
key"
],
companyid
:
custtags
?
custtags
[
0
].
split
(
"_"
)[
1
]:
null
,
password
:
custtags
?
custtags
[
1
].
split
(
"_"
)[
1
]:
null
,
username
:
req
.
headers
[
"x-consumer-username"
],
credid
:
req
.
headers
[
"x-credential-identifier"
]
credid
:
req
.
headers
[
"x-credential-identifier"
],
companykey
:
req
.
headers
[
"x-company-key"
],
}
}
async
doexec
(
methodname
,
pobj
,
query
,
req
)
{
...
...
center-manage/app/base/controller/impl/auth/userCtl.js
View file @
e63772b2
...
...
@@ -17,39 +17,82 @@ class UserCtl extends CtlBase {
//获取验证码,发送给指定手机
async
sendVCode
(
pobj
,
qobj
,
req
)
{
var
mobile
=
pobj
.
mobile
;
let
v
=
await
this
.
smsS
.
sendVCode
(
mobile
);
let
v
=
await
this
.
smsS
.
sendVCode
(
mobile
);
return
system
.
getResult
({
vcodestr
:
v
});
}
async
exit
(
pobj
,
qobj
,
req
)
{
}
//应用的自由用户注册,无需验证,需要前端头设置公司KEY
async
pmregisterByFreeUser
(
p
,
q
,
req
)
{
//检查是否有用户名和密码
if
(
!
pobj
.
userName
||
!
pobj
.
password
)
{
return
system
.
getResult
(
null
,
"请检查用户名和密码是否存在"
)
}
p
.
companykey
=
req
.
xctx
.
companykey
;
if
(
!
p
.
companykey
)
{
return
system
.
getResult
(
null
,
"自有用户创建需要提供公司KEY"
);
}
p
.
rolecode
=
"pr"
;
let
rtn
=
await
this
.
service
.
pmregisterByFreeUser
(
p
,
q
);
return
rtn
;
}
//注册时,分为两种类型,一种是普通pr,一种是租户
//登录后的租户创建属于租户的用户
//需要在控制器里取出公司ID
//和租户绑定同一家公司
//按照用户名和密码进行注册
//控制器端检查用户名和密码非空
async
registerByTantent
(
p
,
q
,
req
)
{
//检查是否有用户名和密码
if
(
!
pobj
.
userName
||
!
pobj
.
password
)
{
return
system
.
getResult
(
null
,
"请检查用户名和密码是否存在"
)
}
p
.
company_id
=
req
.
xctx
.
companyid
;
let
rtn
=
await
this
.
service
.
registerByTantent
(
p
,
q
);
return
rtn
;
}
//租户用户名和密码的租户注册
async
pmregister
(
pobj
,
qobj
,
req
)
{
//平台注册设置平台的应用ID
pobj
.
app_id
=
settings
.
pmappid
;
var
rtn
=
await
this
.
service
.
pmregister
(
pobj
);
return
system
.
getResult
(
rtn
);
}
async
create
(
pobj
,
queryobj
,
req
)
{
var
rtn
=
await
this
.
service
.
register
(
pobj
);
pobj
.
app_id
=
settings
.
pmappid
;
//检查是否有用户名和密码
if
(
!
pobj
.
userName
||
!
pobj
.
password
)
{
return
system
.
getResult
(
null
,
"请检查用户名和密码是否存在"
)
}
var
rtn
=
await
this
.
service
.
pmregister
(
pobj
);
return
system
.
getResult
(
rtn
);
}
async
pmlogin
(
pobj
,
qobj
,
req
)
{
//平台注册设置平台的应用ID
let
rtn
=
await
this
.
service
.
pmlogin
(
pobj
,
qobj
,
req
);
let
rtn
=
await
this
.
service
.
pmlogin
(
pobj
,
qobj
,
req
);
return
system
.
getResult
(
rtn
);
}
async
getUserInfo
(
pobj
,
qobj
,
req
){
let
uname
=
req
.
xctx
.
username
;
let
rtn
=
await
this
.
service
.
getUserInfo
(
uname
);
async
getUserInfo
(
pobj
,
qobj
,
req
)
{
let
uname
=
req
.
xctx
.
username
;
let
rtn
=
await
this
.
service
.
getUserInfo
(
uname
);
return
system
.
getResult
(
rtn
);
}
async
pmloginByVCode
(
pobj
,
qobj
,
req
){
let
rtn
=
this
.
service
.
pmloginByVCode
(
pobj
,
qobj
);
//按照电话创建自由用户
async
pmloginByVCodeForFreeUser
(
p
,
q
,
req
)
{
if
(
!
pobj
.
mobile
||
!
pobj
.
vcode
)
{
return
system
.
getResult
(
null
,
"请检查手机号和验证码是否存在"
)
}
p
.
companykey
=
req
.
xctx
.
companykey
;
if
(
!
p
.
companykey
)
{
return
system
.
getResult
(
null
,
"自有用户创建需要提供公司KEY"
);
}
let
rtn
=
await
this
.
service
.
pmloginByVCodeForFreeUser
(
p
,
q
);
return
rtn
;
}
async
pmloginByVCode
(
pobj
,
qobj
,
req
)
{
let
rtn
=
this
.
service
.
pmloginByVCode
(
pobj
,
qobj
);
return
system
.
getResult
(
rtn
);
}
async
pmSendVCode
(
pobj
,
qobj
,
req
)
{
let
rtn
=
await
this
.
service
.
sendVCode
(
pobj
,
qobj
);
async
pmSendVCode
(
pobj
,
qobj
,
req
)
{
let
rtn
=
await
this
.
service
.
sendVCode
(
pobj
,
qobj
);
return
system
.
getResult
(
rtn
);
}
}
...
...
center-manage/app/base/service/impl/auth/userSve.js
View file @
e63772b2
...
...
@@ -9,14 +9,27 @@ class UserService extends ServiceBase {
this
.
roleDao
=
system
.
getObject
(
"db.auth.roleDao"
);
}
//注册时,必须指定注册类型--租户或者普通用户
//平台注册,默认角色,不具备平台级别的管理或运营功能
//注册接口
//封装kongurl
//前端需要选择用户类型,如果企业用户,那么就设置角色为租户
//如果是个人类型,那么就设置角色为普通
//注册成功返回租户公司或个人所属租户的companykey
//注册有两种类型,一种是租户注册,一种是租户帮助个人注册,需要传递公司的key
//登录后的租户创建属于租户的用户
//需要在控制器里取出公司ID
//和租户绑定同一家公司
//按照用户名和密码进行注册
//控制器端检查用户名和密码非空
async
registerByTantent
(
p
,
q
){
p
.
rolecode
=
"pr"
;
let
rtn
=
await
this
.
pmregister
(
p
,
q
)
return
rtn
;
}
//应用的自由用户注册,无需验证,需要前端头设置公司KEY
async
pmregisterByFreeUser
(
p
,
q
){
p
.
rolecode
=
"pr"
;
let
rtn
=
await
this
.
pmregister
(
p
,
q
)
return
rtn
;
}
//平台租户注册接口方法
//控制器端检查用户名和密码非空
async
pmregister
(
p
,
q
)
{
var
self
=
this
;
let
tmppwd
=
p
.
password
;
...
...
@@ -24,6 +37,9 @@ class UserService extends ServiceBase {
tmppwd
=
settings
.
defaultpwd
;
}
p
.
password
=
this
.
getEncryptStr
(
tmppwd
);
if
(
!
p
.
nickName
){
p
.
nickName
=
p
.
userName
;
}
return
this
.
db
.
transaction
(
async
function
(
t
)
{
//对于租户类型注册,创建一个默认公司,公司名称xxxx的公司
//如果非租户类型,需要按照传递进来的公司companykey,来查询公司,按照companykey缓存到redis
...
...
@@ -33,12 +49,13 @@ class UserService extends ServiceBase {
let
cmp
=
await
self
.
companyDao
.
create
({
name
:
p
.
userName
+
"的公司"
,
companykey
:
cmpkey
},
t
);
p
.
company_id
=
cmp
.
id
;
}
else
{
cmpkey
=
p
.
companykey
;
//否则是租户协助创建个人访客,采用租户获得的公司key
//按照公司key,获取公司 to do cache
let
compfind
=
await
self
.
companyDao
.
model
.
findOne
({
where
:
{
companykey
:
cmpkey
},
transaction
:
t
})
p
.
company_id
=
compfind
.
id
;
if
(
!
p
.
company_id
){
cmpkey
=
p
.
companykey
;
//否则是租户协助创建个人访客,采用租户获得的公司key
//按照公司key,获取公司 to do cache
let
compfind
=
await
self
.
companyDao
.
model
.
findOne
({
where
:
{
companykey
:
cmpkey
},
transaction
:
t
})
p
.
company_id
=
compfind
.
id
;
}
}
let
u
=
await
self
.
dao
.
create
(
p
,
t
)
//设置默认角色,租户
//设置默认普通角色,由于有了租户概念,所以注册时,需要知道当前租户和应用的id 才可以设置默认角色 todo
...
...
@@ -111,7 +128,16 @@ class UserService extends ServiceBase {
});
return
userfind
;
}
//平台注册与登录
//自由用户的电话登录和注册
//需要存在公司KEY
async
pmloginByVCodeForFreeUser
(
p
,
q
){
p
.
rolecode
=
"pr"
let
rtn
=
await
this
.
pmloginByVCode
(
p
,
q
,
req
)
return
system
.
getResult
(
rtn
);
}
//平台租户注册与登录
//用户验证码登录
//
async
pmloginByVCode
(
p
,
q
,
req
)
{
...
...
@@ -138,7 +164,7 @@ class UserService extends ServiceBase {
return
rtn
;
}
else
{
//先按照用户名查续身份信息,获取key,secret,
let
u
=
await
this
.
pmregister
({
userName
:
mobile
,
nickName
:
mobile
});
let
u
=
await
this
.
pmregister
({
userName
:
mobile
,
nickName
:
mobile
,
rolecode
:
p
.
rolecode
,
companykey
:
p
.
companykey
});
let
token
=
await
this
.
cmakejwt
(
u
.
jwtkey
,
u
.
jwtsecret
,
null
);
rtn
.
token
=
token
;
rtn
.
user
=
u
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment