func Current(c *gin.Context) (u *User, loggedIn bool) { intf, ok := c.Get(Ctx_LoggedInKey) if ok { loggedIn = intf.(bool) } if ok && !loggedIn { return } intf, ok = c.Get(Ctx_UserPtrKey) if ok && loggedIn { u = intf.(*User) return } sess := session.FromContext(c) uid, ok := sess.Uint(Sess_UserIdKey) if !ok { c.Set(Ctx_LoggedInKey, false) return nil, false } u, ok = Find(uid) if !ok { c.Set(Ctx_LoggedInKey, false) return nil, false } c.Set(Ctx_LoggedInKey, true) c.Set(Ctx_UserPtrKey, u) return u, true }
func Logout(c *gin.Context) { sess := session.FromContext(c) sess.Remove(Sess_UserIdKey) }
func (u *User) AutoLogin(c *gin.Context) { sess := session.FromContext(c) sess.Set(Sess_UserIdKey, u.ID) }