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  }