-
Notifications
You must be signed in to change notification settings - Fork 18
/
auth.go
83 lines (64 loc) · 1.79 KB
/
auth.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package auth
import (
"context"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gtime"
"github.com/iimeta/fastapi/internal/errors"
"github.com/iimeta/fastapi/internal/service"
"github.com/iimeta/fastapi/utility/logger"
)
type sAuth struct{}
func init() {
service.RegisterAuth(New())
}
func New() service.IAuth {
return &sAuth{}
}
func (s *sAuth) VerifySecretKey(ctx context.Context, secretKey string) error {
now := gtime.TimestampMilli()
defer func() {
logger.Debugf(ctx, "sAuth VerifySecretKey time: %d", gtime.TimestampMilli()-now)
}()
if err := service.Session().Save(ctx, secretKey); err != nil {
logger.Error(ctx, err)
return err
}
if err := s.CheckUser(g.RequestFromCtx(ctx).GetCtx(), service.Session().GetUserId(g.RequestFromCtx(ctx).GetCtx())); err != nil {
logger.Error(g.RequestFromCtx(ctx).GetCtx(), err)
return err
}
if err := service.Common().VerifySecretKey(g.RequestFromCtx(ctx).GetCtx(), secretKey); err != nil {
logger.Error(g.RequestFromCtx(ctx).GetCtx(), err)
return err
}
return nil
}
func (s *sAuth) CheckUser(ctx context.Context, userId int) error {
now := gtime.TimestampMilli()
defer func() {
logger.Debugf(ctx, "sAuth CheckUser time: %d", gtime.TimestampMilli()-now)
}()
user, err := service.User().GetCacheUser(ctx, userId)
if err != nil || user == nil {
if user, err = service.User().GetUser(ctx, userId); err != nil {
logger.Error(ctx, err)
return errors.ERR_INVALID_USER
}
if err = service.User().SaveCacheUser(ctx, user); err != nil {
logger.Error(ctx, err)
return err
}
}
if user == nil {
err = errors.ERR_INVALID_USER
logger.Error(ctx, err)
return err
}
if user.Status == 2 {
err = errors.ERR_USER_DISABLED
logger.Error(ctx, err)
return err
}
service.Session().SaveUser(ctx, user)
return nil
}