github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/routers/ConnectHandler.go (about) 1 package routers 2 3 import ( 4 "fmt" 5 6 "github.com/insionng/makross" 7 "github.com/insionng/makross/cache" 8 9 "github.com/insionng/yougam/helper" 10 "github.com/insionng/yougam/models" 11 ) 12 13 func GetConnectHandler(self *makross.Context) error { 14 15 _usr_, okay := self.Session.Get("SignedUser").(*models.User) 16 if !okay { 17 return self.NoContent(401) 18 } 19 20 if !(_usr_ != nil) { 21 self.Flash.Warning("请先行登录再进行聊天操作!") 22 return self.Redirect("/") 23 } 24 25 allow := false 26 self.Set("contactHome", allow) 27 self.Set("contactSearch", allow) 28 self.Set("catpage", "ConnectHandler") 29 30 receiver := self.Param("name").String() 31 if len(receiver) == 0 { 32 receiver = self.FormValue("name") 33 } 34 35 if len(receiver) > 0 { 36 if receiver == _usr_.Username { 37 allow = false 38 self.Set("allow", allow) 39 self.Flash.Warning("不允许自己与自己聊天!") 40 return self.Redirect("/contact/") 41 } 42 43 recipient, err := models.GetUserByUsername(receiver) 44 if (err != nil) || (recipient == nil) { 45 allow = false 46 self.Set("allow", allow) 47 self.Flash.Error("聊天对象不存在此世间!") 48 return self.Redirect("/contact/") 49 } 50 51 if !models.IsFriend(_usr_.Id, recipient.Id) { 52 allow = false 53 self.Set("allow", allow) 54 self.Flash.Error("你们还不是好友,请先行建立好友关系~") 55 return self.Redirect(fmt.Sprintf("/friend/add/%v/", recipient.Id)) 56 } 57 58 key := _usr_.Username + ":" + helper.AesKey + ":" + receiver 59 token := helper.EncryptHash(key, nil) 60 cache.Store(self).Set(token, _usr_, 60) 61 62 allow = true 63 self.Set("token", token) 64 self.Set("receiver", receiver) 65 self.Set("recipient", *recipient) 66 } 67 68 self.Set("messager", true) 69 self.Set("allow", allow) 70 return self.Render("connect") 71 72 }