2 Star 0 Fork 0

websample/webserver

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
function.go 4.17 KB
一键复制 编辑 原始数据 按行查看 历史
wuchao 提交于 2021-09-14 10:11 +08:00 . 增加用户列表
package local
import (
"encoding/json"
"fmt"
loginv1 "gitee.com/websample/webserver/pkg/apis/login/v1"
userv1 "gitee.com/websample/webserver/pkg/apis/user/v1"
"gitee.com/websample/webserver/pkg/filestorage"
"k8s.io/klog"
"regexp"
"strings"
)
type Local struct {
}
const (
logintype = "login"
usertype = "user"
)
func NewLocal() Local {
return Local{}
}
func (l Local) GetLoginsByName(username string) (*loginv1.LoginList, error) {
var result loginv1.LoginList
var err error
data := filestorage.GetCach(logintype)
for _, v := range data {
var tmp loginv1.Login
err = json.Unmarshal([]byte(v), &tmp)
if err != nil {
klog.Warning("data can not unmarshal")
}
if tmp.Spec.User.Spec.Name != username {
continue
}
result.Items = append(result.Items, tmp)
}
return &result, err
}
func (l Local) RegestUser(login loginv1.Login) (*loginv1.Login, error) {
var result loginv1.Login
var err error
result.Spec.Action = loginv1.Register
dataList := filestorage.GetCach(usertype)
for _, v := range dataList {
var tmp userv1.User
err = json.Unmarshal([]byte(v), &tmp)
if err != nil {
klog.Warning("data can not unmarshal")
}
if tmp.Spec.Name == login.Spec.User.Spec.Name {
result.Spec.Success = false
result.Spec.Reason = "Duplicate user name"
return &result, fmt.Errorf("Duplicate user name")
}
if tmp.Spec.Email == login.Spec.User.Spec.Email {
result.Spec.Success = false
result.Spec.Reason = "Email has been used"
return &result, fmt.Errorf("Email has been used")
}
if tmp.Spec.PhoneNumber == login.Spec.User.Spec.PhoneNumber {
result.Spec.Success = false
result.Spec.Reason = "PhoneNumber has been used"
return &result, fmt.Errorf("PhoneNumber has been used")
}
if !strings.Contains(login.Spec.User.Spec.Email, "@") {
result.Spec.Success = false
result.Spec.Reason = "Email format error"
return &result, fmt.Errorf("Email format error")
}
pattern := "\\d+" //反斜杠要转义
if ok, _ := regexp.MatchString(pattern, tmp.Spec.PhoneNumber); !ok {
result.Spec.Success = false
result.Spec.Reason = "Wrong phone number format"
return &result, fmt.Errorf("Wrong phone number format")
}
}
login.Spec.Action = loginv1.Register
login.Spec.Success = true
datastring, _ := json.Marshal(login)
var data filestorage.Filestorage
data.TypeName = "login"
data.Data = datastring
filestorage.InserData(data)
data.TypeName = "user"
datastring, _ = json.Marshal(login.Spec.User)
data.Data = datastring
filestorage.InserData(data)
return &result, err
}
func (l Local) ListLogins() (*loginv1.LoginList, error) {
var result loginv1.LoginList
var err error
data := filestorage.GetCach(logintype)
for _, v := range data {
var tmp loginv1.Login
err = json.Unmarshal([]byte(v), &tmp)
if err != nil {
klog.Warning("data can not unmarshal")
}
result.Items = append(result.Items, tmp)
}
return &result, err
}
func (l Local) LoginUser(login loginv1.Login) (*loginv1.Login, error) {
var err error
login.Spec.Action = loginv1.LoginIn
dataList := filestorage.GetCach(usertype)
for _, v := range dataList {
var tmp userv1.User
err = json.Unmarshal([]byte(v), &tmp)
if err != nil {
klog.Warning("data can not unmarshal")
}
if tmp.Spec.Name == login.Spec.User.Spec.Name {
if tmp.Spec.EncryptedPassword == login.Spec.User.Spec.EncryptedPassword {
login.Spec.Success = true
datastring, _ := json.Marshal(login)
var data filestorage.Filestorage
data.TypeName = "login"
data.Data = datastring
filestorage.InserData(data)
return &login, nil
} else {
login.Spec.Success = false
login.Spec.Reason = "Password is wrong"
datastring, _ := json.Marshal(login)
var data filestorage.Filestorage
data.TypeName = "login"
data.Data = datastring
filestorage.InserData(data)
return &login, fmt.Errorf("Password is wrong")
}
}
}
login.Spec.Success = false
login.Spec.Reason = "User does not exits"
datastring, _ := json.Marshal(login)
var data filestorage.Filestorage
data.TypeName = "login"
data.Data = datastring
filestorage.InserData(data)
return &login, fmt.Errorf("User does not exits")
}
func (l Local) LogoutUser(user loginv1.Login) (*loginv1.Login, error) {
return nil, nil
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/websample/webserver.git
git@gitee.com:websample/webserver.git
websample
webserver
webserver
bd184db6fa25

搜索帮助