func ThirdParty_SaveThirdPartyProfileToSession( ctx *goku.HttpContext, profile *ThirdPartyUserProfile) (err error) { providerName := profile.ProviderName sessionKeyBase := thirdParty_GetSessionKeyBase(providerName, profile.Id) profileSessionId := ThirdParty_GetThirdPartyProfileSessionId(sessionKeyBase) expires := time.Now().Add(time.Duration(3600) * time.Second) b, _ := json.Marshal(profile) s := string(b) err = SaveItemToSession(profileSessionId, s, expires) if err != nil { return } c := &http.Cookie{ Name: config.ThirdPartyCookieKey, Value: sessionKeyBase, Expires: expires, Path: "/", HttpOnly: true, } ctx.SetCookie(c) return }
//为别的平台用户写cookie func setCookieForOtherPlatformUser(userId int64, email string, seconds int, ctx *goku.HttpContext) { //注册成功,写cookie now := time.Now() h := md5.New() h.Write([]byte(fmt.Sprintf("%v-%v", email, now.Unix()))) ticket := fmt.Sprintf("%x_%v", h.Sum(nil), now.Unix()) expires := now.Add(time.Duration(seconds) * time.Second) redisClient := models.GetRedis() defer redisClient.Quit() err := redisClient.Set(ticket, userId) if err != nil { goku.Logger().Errorln(err.Error()) } else { _, err = redisClient.Expireat(ticket, expires.Unix()) if err != nil { goku.Logger().Errorln(err.Error()) } c := &http.Cookie{ Name: "_glut", Value: ticket, Expires: expires, Path: "/", HttpOnly: true, } ctx.SetCookie(c) } }
func thirdParty_ClearThirdPartyProfileFromSession(ctx *goku.HttpContext) { sessionIdBase := ctx.Data["thirdPartySessionIdBase"].(string) sessinId := ThirdParty_GetThirdPartyProfileSessionId(sessionIdBase) RemoveItemFromSession(sessinId) c := &http.Cookie{ Name: config.ThirdPartyCookieKey, Expires: time.Now().Add(-10 * time.Second), Path: "/", } ctx.SetCookie(c) }
// 发现 首页 func discover_index(ctx *goku.HttpContext) goku.ActionResulter { ot := ctx.Get("o") if ot == "" { ot = "hot" } dt, _ := strconv.Atoi(ctx.Get("dt")) ctx.ViewData["Order"] = ot links, _ := models.LinkForHome_GetByPage(ot, dt, 1, golink.PAGE_SIZE) ctx.ViewData["Links"] = models.Link_ToVLink(links, ctx) ctx.ViewData["TopTab"] = "discover" ctx.ViewData["HasMoreLink"] = len(links) >= golink.PAGE_SIZE // 最新链接的未读提醒 var userId, lastReadLinkId int64 unreadCookieName := "newestUnrLinkId" u, ok := ctx.Data["user"] if ok && u != nil { user := u.(*models.User) userId = user.Id lastReadLinkId = user.LastReadLinkId } else { // 从Cook读取最后一次阅读的链接id cLastReadLinkId, err := ctx.Request.Cookie(unreadCookieName) if err == nil { lastReadLinkId, _ = strconv.ParseInt(cLastReadLinkId.Value, 10, 64) } } if ot == "hot" { newestUnreadCount, _ := models.NewestLinkUnread_All(userId, lastReadLinkId) ctx.ViewData["NewestUnreadCount"] = models.NewestLinkUnread_ToString(userId, newestUnreadCount) } else if ot == "time" && links != nil && len(links) > 0 { if userId > 0 { models.NewestLinkUnread_UpdateForAll(userId, links[0].Id) } else { c := &http.Cookie{ Name: unreadCookieName, Value: fmt.Sprintf("%d", links[0].Id), Expires: time.Now().AddDate(0, 1, 0), Path: "/", HttpOnly: true, } ctx.SetCookie(c) } } return ctx.Render("/home/index", nil) }