account.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package controllers
  2. import (
  3. "time"
  4. "github.com/lifei6671/godoc/conf"
  5. "github.com/lifei6671/godoc/models"
  6. "github.com/lifei6671/godoc/utils"
  7. "github.com/astaxie/beego"
  8. "github.com/astaxie/beego/logs"
  9. )
  10. // AccountController 用户登录与注册.
  11. type AccountController struct {
  12. BaseController
  13. }
  14. // Login 用户登录.
  15. func (c *AccountController) Login() {
  16. c.Prepare()
  17. var remember struct { MemberId int ; Account string; Time time.Time}
  18. //如果Cookie中存在登录信息
  19. if cookie,ok := c.GetSecureCookie(conf.GetAppKey(),"login");ok{
  20. if err := utils.Decode(cookie,&remember); err == nil {
  21. member := models.NewMember()
  22. member.MemberId = remember.MemberId
  23. if err := models.NewMember().Find(remember.MemberId); err == nil {
  24. c.SetMember(*member)
  25. c.Redirect(beego.URLFor("HomeController.Index"), 302)
  26. c.StopRun()
  27. }
  28. }
  29. }
  30. if c.Ctx.Input.IsPost() {
  31. account := c.GetString("account")
  32. password := c.GetString("password")
  33. member,err := models.NewMember().Login(account,password)
  34. //如果没有数据
  35. if err == nil {
  36. c.SetMember(*member)
  37. c.JsonResult(0,"ok")
  38. c.StopRun()
  39. }else{
  40. logs.Error("用户登录 =>",err)
  41. c.JsonResult(500,"账号或密码错误",nil)
  42. }
  43. return
  44. }else{
  45. c.Layout = ""
  46. c.TplName = "account/login.tpl"
  47. }
  48. }
  49. func (p *AccountController) Register() {
  50. p.TplName = "account/register.tpl"
  51. }
  52. func (p *AccountController) FindPassword() {
  53. p.TplName = "account/find_password.tpl"
  54. }
  55. // Logout 退出登录.
  56. func (c *AccountController) Logout(){
  57. c.SetMember(models.Member{});
  58. c.Redirect(beego.URLFor("AccountController.Login"),302)
  59. }