代码拉取完成,页面将自动刷新
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
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。