Ejemplo n.º 1
0
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
}
Ejemplo n.º 2
0
func Logout(c *gin.Context) {
	sess := session.FromContext(c)
	sess.Remove(Sess_UserIdKey)
}
Ejemplo n.º 3
0
func (u *User) AutoLogin(c *gin.Context) {
	sess := session.FromContext(c)
	sess.Set(Sess_UserIdKey, u.ID)
}