Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
水淹萌龙
kubesphere
提交
972d8350
K
kubesphere
项目概览
水淹萌龙
/
kubesphere
与 Fork 源项目一致
Fork自
KubeSphere / kubesphere
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kubesphere
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
972d8350
编写于
9月 02, 2019
作者:
K
KubeSphere CI Bot
提交者:
GitHub
9月 02, 2019
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #686 from wansir/fix-email-regex
fix: email validation
上级
76800b43
5ca67f6e
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
29 addition
and
32 deletion
+29
-32
pkg/apiserver/iam/im.go
pkg/apiserver/iam/im.go
+29
-32
未找到文件。
pkg/apiserver/iam/im.go
浏览文件 @
972d8350
...
...
@@ -19,10 +19,10 @@ package iam
import
(
"fmt"
"
github.com/golang/g
log"
"
k8s.io/k
log"
"kubesphere.io/kubesphere/pkg/params"
"net/http"
"
regexp
"
"
net/mail
"
"strings"
"github.com/emicklei/go-restful"
...
...
@@ -34,38 +34,35 @@ import (
"kubesphere.io/kubesphere/pkg/models/iam"
)
const
(
emailRegex
=
"^[a-z0-9]+([._
\\
-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$"
)
func
CreateUser
(
req
*
restful
.
Request
,
resp
*
restful
.
Response
)
{
var
user
models
.
User
err
:=
req
.
ReadEntity
(
&
user
)
if
err
!=
nil
{
g
log
.
Info
(
err
)
k
log
.
Info
(
err
)
resp
.
WriteHeaderAndEntity
(
http
.
StatusBadRequest
,
errors
.
Wrap
(
err
))
return
}
if
user
.
Username
==
""
{
err
=
fmt
.
Errorf
(
"invalid username: %s"
,
user
.
Username
)
g
log
.
Info
(
err
,
user
.
Username
)
k
log
.
Info
(
err
,
user
.
Username
)
resp
.
WriteHeaderAndEntity
(
http
.
StatusBadRequest
,
errors
.
Wrap
(
err
))
return
}
if
!
regexp
.
MustCompile
(
emailRegex
)
.
MatchString
(
user
.
Email
)
{
// Parses a single RFC 5322 address, e.g. "Barry Gibbs <bg@example.com>"
if
_
,
err
=
mail
.
ParseAddress
(
user
.
Email
);
err
!=
nil
{
err
=
fmt
.
Errorf
(
"invalid email: %s"
,
user
.
Email
)
g
log
.
Info
(
err
,
user
.
Email
)
k
log
.
Info
(
err
,
user
.
Email
)
resp
.
WriteHeaderAndEntity
(
http
.
StatusBadRequest
,
errors
.
Wrap
(
err
))
return
}
if
len
(
user
.
Password
)
<
6
{
err
=
fmt
.
Errorf
(
"invalid password"
)
glog
.
Info
(
err
,
user
.
Password
)
klog
.
Info
(
err
)
resp
.
WriteHeaderAndEntity
(
http
.
StatusBadRequest
,
errors
.
Wrap
(
err
))
return
}
...
...
@@ -74,11 +71,11 @@ func CreateUser(req *restful.Request, resp *restful.Response) {
if
err
!=
nil
{
if
ldap
.
IsErrorWithCode
(
err
,
ldap
.
LDAPResultEntryAlreadyExists
)
{
g
log
.
Info
(
err
)
k
log
.
Info
(
err
)
resp
.
WriteHeaderAndEntity
(
http
.
StatusConflict
,
errors
.
Wrap
(
err
))
return
}
glog
.
Error
(
err
)
klog
.
Info
(
err
)
resp
.
WriteHeaderAndEntity
(
http
.
StatusInternalServerError
,
errors
.
Wrap
(
err
))
return
}
...
...
@@ -93,7 +90,7 @@ func DeleteUser(req *restful.Request, resp *restful.Response) {
if
operator
==
username
{
err
:=
fmt
.
Errorf
(
"cannot delete yourself"
)
g
log
.
Info
(
err
)
k
log
.
Info
(
err
)
resp
.
WriteHeaderAndEntity
(
http
.
StatusForbidden
,
errors
.
Wrap
(
err
))
return
}
...
...
@@ -101,7 +98,7 @@ func DeleteUser(req *restful.Request, resp *restful.Response) {
err
:=
iam
.
DeleteUser
(
username
)
if
err
!=
nil
{
glog
.
Error
(
err
)
klog
.
Info
(
err
)
resp
.
WriteHeaderAndEntity
(
http
.
StatusInternalServerError
,
errors
.
Wrap
(
err
))
return
}
...
...
@@ -118,28 +115,28 @@ func UpdateUser(req *restful.Request, resp *restful.Response) {
err
:=
req
.
ReadEntity
(
&
user
)
if
err
!=
nil
{
g
log
.
Info
(
err
)
k
log
.
Info
(
err
)
resp
.
WriteHeaderAndEntity
(
http
.
StatusBadRequest
,
errors
.
Wrap
(
err
))
return
}
if
usernameInPath
!=
user
.
Username
{
err
=
fmt
.
Errorf
(
"the name of user (%s) does not match the name on the URL (%s)"
,
user
.
Username
,
usernameInPath
)
g
log
.
Info
(
err
)
k
log
.
Info
(
err
)
resp
.
WriteHeaderAndEntity
(
http
.
StatusBadRequest
,
errors
.
Wrap
(
err
))
return
}
if
!
regexp
.
MustCompile
(
emailRegex
)
.
MatchString
(
user
.
Email
)
{
if
_
,
err
=
mail
.
ParseAddress
(
user
.
Email
);
err
!=
nil
{
err
=
fmt
.
Errorf
(
"invalid email: %s"
,
user
.
Email
)
g
log
.
Info
(
err
)
k
log
.
Info
(
err
)
resp
.
WriteHeaderAndEntity
(
http
.
StatusBadRequest
,
errors
.
Wrap
(
err
))
return
}
if
user
.
Password
!=
""
&&
len
(
user
.
Password
)
<
6
{
err
=
fmt
.
Errorf
(
"invalid password"
)
g
log
.
Info
(
err
)
k
log
.
Info
(
err
)
resp
.
WriteHeaderAndEntity
(
http
.
StatusBadRequest
,
errors
.
Wrap
(
err
))
return
}
...
...
@@ -148,7 +145,7 @@ func UpdateUser(req *restful.Request, resp *restful.Response) {
if
usernameInHeader
==
user
.
Username
&&
user
.
Password
!=
""
{
isUserManager
,
err
:=
isUserManager
(
usernameInHeader
)
if
err
!=
nil
{
g
log
.
Error
(
err
)
k
log
.
Error
(
err
)
resp
.
WriteHeaderAndEntity
(
http
.
StatusInternalServerError
,
errors
.
Wrap
(
err
))
return
}
...
...
@@ -157,7 +154,7 @@ func UpdateUser(req *restful.Request, resp *restful.Response) {
}
if
err
!=
nil
{
err
=
fmt
.
Errorf
(
"incorrect current password"
)
g
log
.
Info
(
err
)
k
log
.
Info
(
err
)
resp
.
WriteHeaderAndEntity
(
http
.
StatusBadRequest
,
errors
.
Wrap
(
err
))
return
}
...
...
@@ -167,12 +164,12 @@ func UpdateUser(req *restful.Request, resp *restful.Response) {
if
err
!=
nil
{
if
ldap
.
IsErrorWithCode
(
err
,
ldap
.
LDAPResultEntryAlreadyExists
)
{
g
log
.
Info
(
err
)
k
log
.
Info
(
err
)
resp
.
WriteHeaderAndEntity
(
http
.
StatusConflict
,
errors
.
Wrap
(
err
))
return
}
g
log
.
Error
(
err
)
k
log
.
Error
(
err
)
resp
.
WriteHeaderAndEntity
(
http
.
StatusInternalServerError
,
errors
.
Wrap
(
err
))
return
}
...
...
@@ -196,7 +193,7 @@ func UserLoginLogs(req *restful.Request, resp *restful.Response) {
logs
,
err
:=
iam
.
LoginLog
(
username
)
if
err
!=
nil
{
g
log
.
Error
(
err
)
k
log
.
Error
(
err
)
resp
.
WriteHeaderAndEntity
(
http
.
StatusInternalServerError
,
errors
.
Wrap
(
err
))
return
}
...
...
@@ -224,10 +221,10 @@ func DescribeUser(req *restful.Request, resp *restful.Response) {
if
err
!=
nil
{
if
ldap
.
IsErrorWithCode
(
err
,
ldap
.
LDAPResultNoSuchObject
)
{
g
log
.
Info
(
err
)
k
log
.
Info
(
err
)
resp
.
WriteHeaderAndEntity
(
http
.
StatusNotFound
,
errors
.
Wrap
(
err
))
}
else
{
g
log
.
Error
(
err
)
k
log
.
Error
(
err
)
resp
.
WriteHeaderAndEntity
(
http
.
StatusInternalServerError
,
errors
.
Wrap
(
err
))
}
return
...
...
@@ -236,7 +233,7 @@ func DescribeUser(req *restful.Request, resp *restful.Response) {
clusterRole
,
err
:=
iam
.
GetUserClusterRole
(
username
)
if
err
!=
nil
{
g
log
.
Error
(
err
)
k
log
.
Error
(
err
)
resp
.
WriteHeaderAndEntity
(
http
.
StatusInternalServerError
,
errors
.
Wrap
(
err
))
return
}
...
...
@@ -246,7 +243,7 @@ func DescribeUser(req *restful.Request, resp *restful.Response) {
clusterRules
,
err
:=
iam
.
GetUserClusterSimpleRules
(
username
)
if
err
!=
nil
{
g
log
.
Error
(
err
)
k
log
.
Error
(
err
)
resp
.
WriteHeaderAndEntity
(
http
.
StatusInternalServerError
,
errors
.
Wrap
(
err
))
return
}
...
...
@@ -269,7 +266,7 @@ func Precheck(req *restful.Request, resp *restful.Response) {
exist
,
err
:=
iam
.
UserCreateCheck
(
check
)
if
err
!=
nil
{
g
log
.
Error
(
err
)
k
log
.
Error
(
err
)
resp
.
WriteHeaderAndEntity
(
http
.
StatusInternalServerError
,
errors
.
Wrap
(
err
))
return
}
...
...
@@ -290,7 +287,7 @@ func ListUsers(req *restful.Request, resp *restful.Response) {
reverse
:=
params
.
ParseReverse
(
req
)
if
err
!=
nil
{
g
log
.
Info
(
err
)
k
log
.
Info
(
err
)
resp
.
WriteHeaderAndEntity
(
http
.
StatusBadRequest
,
errors
.
Wrap
(
err
))
return
}
...
...
@@ -298,7 +295,7 @@ func ListUsers(req *restful.Request, resp *restful.Response) {
users
,
err
:=
iam
.
ListUsers
(
conditions
,
orderBy
,
reverse
,
limit
,
offset
)
if
err
!=
nil
{
g
log
.
Error
(
err
)
k
log
.
Error
(
err
)
resp
.
WriteHeaderAndEntity
(
http
.
StatusInternalServerError
,
errors
.
Wrap
(
err
))
return
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录