88 lines
2.0 KiB
Go
88 lines
2.0 KiB
Go
package user
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"go_dreamfactory/comm"
|
|
"go_dreamfactory/modules"
|
|
"go_dreamfactory/pb"
|
|
"go_dreamfactory/sys/cache"
|
|
"go_dreamfactory/sys/db"
|
|
"go_dreamfactory/utils"
|
|
"strings"
|
|
|
|
"github.com/liwei1dao/lego/sys/log"
|
|
"go.mongodb.org/mongo-driver/mongo"
|
|
)
|
|
|
|
type LoginComp struct {
|
|
modules.MComp_GateComp
|
|
}
|
|
|
|
//登录
|
|
func (this *LoginComp) Login(ctx context.Context, session comm.IUserSession, req *pb.UserLoginReq) error {
|
|
log.Debugf("User - Login: session:%v rsp:%v", session.ToString(), req)
|
|
|
|
var code pb.ErrorCode = pb.ErrorCode_Success
|
|
rsp := &pb.UserLoginResp{}
|
|
secStr := req.Sec
|
|
|
|
if !strings.HasPrefix(secStr, "CE:") || len(secStr) < 35 {
|
|
session.SendMsg("user", "login", pb.ErrorCode_SecKey, rsp)
|
|
return nil
|
|
}
|
|
|
|
clientMd5Key := strings.TrimPrefix(secStr, "CE:")
|
|
rawmsg := secStr[35:]
|
|
serverMd5Key := utils.MD5Str(rawmsg)
|
|
s := fmt.Sprintf("%x", serverMd5Key)
|
|
if !strings.EqualFold(strings.ToLower(s), strings.ToLower(clientMd5Key)) {
|
|
session.SendMsg("user", "login", pb.ErrorCode_SecKeyInvalid, rsp)
|
|
return nil
|
|
}
|
|
account := ""
|
|
db_user, err := db.Defsys.User_FindUserByAccount(account)
|
|
if err != nil {
|
|
if err != mongo.ErrNoDocuments {
|
|
return err
|
|
}
|
|
}
|
|
|
|
if db_user.UserId == "" {
|
|
db_user.Account = account
|
|
err = db.Defsys.User_CreateUser(db_user)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
session.Build(db_user.UserId)
|
|
|
|
cache_user := &pb.Cache_UserData{
|
|
SessionId: session.GetSessionId(),
|
|
GatewayServiceId: session.GetGatewayServiceId(),
|
|
UserData: db_user,
|
|
}
|
|
err = cache.Defsys.User_UpdateUser(cache_user)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
session.SendMsg("user", "login", code, &pb.UserLoginResp{
|
|
Data: &pb.Cache_UserData{
|
|
UserData: &pb.DB_UserData{
|
|
UserId: db_user.UserId,
|
|
},
|
|
},
|
|
})
|
|
|
|
return nil
|
|
}
|
|
|
|
//注销
|
|
func (this *LoginComp) Logout(ctx context.Context, session comm.IUserSession, rsp *pb.UserLoginReq) error {
|
|
log.Debugf("User - Logout: session:%v rsp:%v", session.ToString(), rsp)
|
|
|
|
return nil
|
|
}
|