github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/routers/root/RCreateUser.go (about)

     1  package root
     2  
     3  import (
     4  	"fmt"
     5  	"github.com/insionng/makross"
     6  	
     7  	"strconv"
     8  	"github.com/insionng/yougam/helper"
     9  	"github.com/insionng/yougam/models"
    10  )
    11  
    12  func GetRCreateUserHandler(self *makross.Context) error {
    13  	self.Set("catpage", "RCreateUserHandler")
    14  	TplNames := "root/create_user"
    15  	return self.Render(TplNames)
    16  }
    17  
    18  func PostRCreateUserHandler(self *makross.Context) error {
    19  
    20  	
    21  
    22  	username := self.FormValue("username")
    23  	nickname := self.FormValue("nickname")
    24  	password := self.FormValue("password")
    25  	repassword := self.FormValue("repassword")
    26  	content := self.FormValue("content")
    27  	mobile := self.FormValue("mobile")
    28  	email := self.FormValue("email")
    29  	group := self.FormValue("group")
    30  	gender := self.Args("gender").MustInt64()
    31  
    32  	if len(password) > 0 {
    33  		if helper.CheckPassword(password) == false {
    34  			self.Flash.Error("密码含有非法字符或密码过短(至少4~30位密码)!")
    35  			return self.Redirect("/root/create/user/")
    36  
    37  		} else if password != repassword {
    38  
    39  			self.Flash.Error("密码前后不一致,请确认你输入的密码正确无误!")
    40  			return self.Redirect("/root/create/user/")
    41  
    42  		}
    43  	} else {
    44  
    45  		self.Flash.Error("密码为空!")
    46  		return self.Redirect("/root/create/user/")
    47  
    48  	}
    49  
    50  	if len(username) == 0 {
    51  		self.Flash.Error("用户名是为永久性设定,不能少于4个字或多于30个字,请慎重考虑,不能为空!")
    52  		return self.Redirect("/root/create/user/")
    53  
    54  	}
    55  
    56  	if len(email) > 0 {
    57  		if helper.CheckEmail(email) == false {
    58  			self.Flash.Error("邮箱格式错误!")
    59  			return self.Redirect("/root/create/user/")
    60  
    61  		}
    62  
    63  	} else {
    64  		if helper.CheckEmail(username) == true {
    65  			email = username
    66  		} else if helper.CheckUsername(username) == false {
    67  			self.Flash.Error("用户名是为永久性设定,不能少于4个字或多于30个字,请慎重考虑,不能为空!")
    68  			return self.Redirect("/root/create/user/")
    69  
    70  		}
    71  
    72  	}
    73  
    74  	if len(email) > 0 {
    75  		if usrinfo, err := models.GetUserByEmail(email); (usrinfo != nil) && (err == nil) {
    76  
    77  			if usrinfo, err := models.GetUserByUsername(username); usrinfo != nil {
    78  				self.Flash.Error("此用户名不能使用!")
    79  				return self.Redirect("/root/create/user/")
    80  
    81  			} else if err != nil {
    82  
    83  				self.Flash.Error("检索用户名账号期间出错!")
    84  				return self.Redirect("/root/create/user/")
    85  
    86  			}
    87  
    88  			self.Flash.Error("此Email不能使用!")
    89  			return self.Redirect("/root/create/user/")
    90  
    91  		} else if (usrinfo == nil) && (err == nil) {
    92  			fmt.Println(email)
    93  		} else {
    94  			self.Flash.Error("检索EMAIL账号期间出错!")
    95  			return self.Redirect("/root/create/user/")
    96  
    97  		}
    98  	} else {
    99  		if usrinfo, err := models.GetUserByUsername(username); usrinfo != nil {
   100  
   101  			self.Flash.Error("此用户名已经被注册,请重新命名!")
   102  			return self.Redirect("/root/create/user/")
   103  
   104  		} else if err != nil {
   105  
   106  			self.Flash.Error("检索账号数据期间出错!")
   107  			return self.Redirect("/root/create/user/")
   108  
   109  		}
   110  	}
   111  
   112  	if usrid, err := models.AddUser(email, username, nickname, "", helper.EncryptHash(password, nil), group, content, mobile, gender, 1); err != nil && usrid <= 0 {
   113  
   114  		self.Flash.Error("用户注册信息写入数据库时发生错误!")
   115  		return self.Redirect("/root/create/user/")
   116  
   117  	} else {
   118  
   119  		if usrinfo, err := models.GetUser(usrid); err == nil && usrinfo != nil {
   120  			self.Flash.Success("添加用户账号保存成功!")
   121  			return self.Redirect("/root/read/user/" + strconv.FormatInt(usrid, 10) + "/")
   122  
   123  		} else {
   124  
   125  			self.Flash.Error("获取用户数据出错!")
   126  			return self.Redirect("/root/create/user/")
   127  
   128  		}
   129  
   130  	}
   131  
   132  }