MCPcopy Index your code
hub / github.com/1Panel-dev/1Panel / SessionAuth

Function SessionAuth

core/middleware/session.go:15–59  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

13)
14
15func SessionAuth() gin.HandlerFunc {
16 return func(c *gin.Context) {
17 apiReq := c.GetBool("API_AUTH")
18 if isAnonymousAuthPath(c.Request.URL.Path) || apiReq {
19 c.Next()
20 return
21 }
22
23 psession, err := global.SESSION.Get(c)
24 if err != nil {
25 errItem := err.Error()
26 if errItem == "ErrSessionDataFormat" || errItem == "ErrSessionDataNotFound" {
27 helper.BadAuth(c, "ErrNotLogin", buserr.New(errItem))
28 return
29 }
30 helper.BadAuth(c, "ErrNotLogin", err)
31 return
32 }
33 if len(psession.Name) == 0 || len(psession.ID) == 0 {
34 helper.BadAuth(c, "ErrNotLogin", err)
35 return
36 }
37 c.Set(psessionUtils.GinContextSessionUserKey, psession)
38 sessionTimeout, err := baseRepo.NewISettingRepo().GetValueByKey("SessionTimeout")
39 if err != nil {
40 global.LOG.Errorf("get session timeout failed, err: %v", err)
41 helper.InternalServer(c, err)
42 c.Abort()
43 return
44 }
45 lifeTime, _ := strconv.Atoi(sessionTimeout)
46
47 if _, err := global.SESSION.RefreshIfNeeded(c, psession, global.CONF.Conn.SSL == constant.StatusEnable, lifeTime); err != nil {
48 errItem := err.Error()
49 if errItem == "ErrSessionDataFormat" || errItem == "ErrSessionDataNotFound" {
50 helper.BadAuth(c, "ErrNotLogin", buserr.New(errItem))
51 return
52 }
53 global.LOG.Warnf("refresh session failed, path=%s, err=%v", c.Request.URL.Path, err)
54 helper.BadAuth(c, "ErrNotLogin", err)
55 return
56 }
57 c.Next()
58 }
59}
60
61func isAnonymousAuthPath(path string) bool {
62 switch path {

Callers

nothing calls this directly

Calls 7

isAnonymousAuthPathFunction · 0.85
NextMethod · 0.80
RefreshIfNeededMethod · 0.80
GetMethod · 0.65
GetValueByKeyMethod · 0.65
ErrorMethod · 0.45
SetMethod · 0.45

Tested by

no test coverage detected