第十一节:使用goctl-gin 搭建gin项目用户注册鉴权(下)
在aiwork/internal/logic/user.go中我们完成对应的登陆和创建接口
登陆实现:
func (l *user) Login(ctx context.Context, req *domain.LoginReq) (resp *domain.LoginResp, err error) { name, err := l.svcCtx.UserModel.FindByName(ctx, req.Name) if err != nil { return nil, err } if !encrypt.ValidatePasswordHash(req.Password, name.Password) { return nil, errors.New("密码错误") } now := time.Now().Unix() jwtToken, err := token.GetJwtToken(l.svcCtx.Config.Jwt.Secret, now, l.svcCtx.Config.Jwt.Expire, name.ID.Hex()) if err != nil { return nil, err } resp = &domain.LoginResp{ Id: name.ID.Hex(), Name: name.Name, Status: name.Status, AccessExpire: l.svcCtx.Config.Jwt.Expire + now, AccessToken: jwtToken, } return resp, nil }
创建实现:
func (l *user) Create(ctx context.Context, req *domain.User) (err error) { //判断用户是否存在 u, err := l.svcCtx.UserModel.FindByName(ctx, req.Name) if err != nil && err != model.ErrNotUser{ return } if u != nil { return errors.New("用户已存在") } password := "123456" if len(req.Password) > 0 { password = req.Password } hash, err := encrypt.GenPasswordHash([]byte(password)) if err != nil { return } err = l.svcCtx.UserModel.Insert(ctx, &model.User{ Name: req.Name, Password: string(hash), }) if err != nil { return errors.New("添加错误:" + err.Error()) } return nil }

浙公网安备 33010602011771号