github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/routers/root/RCreateAdministrator.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 GetRCreateRootHandler(self *makross.Context) error {
    13  	self.Set("catpage", "RCreateAdministrator")
    14  	TplNames := "root/create_administrator"
    15  	return self.Render(TplNames)
    16  
    17  }
    18  
    19  func PostRCreateRootHandler(self *makross.Context) error {
    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/administrator/")
    36  		} else if password != repassword {
    37  			self.Flash.Error("密码前后不一致,请确认你输入的密码正确无误!")
    38  			return self.Redirect("/root/create/administrator/")
    39  		}
    40  	} else {
    41  
    42  		self.Flash.Error("密码为空!")
    43  		return self.Redirect("/root/create/administrator/")
    44  	}
    45  
    46  	if len(username) <= 0 {
    47  		self.Flash.Error("用户名是为永久性设定,不能少于4个字或多于30个字,请慎重考虑,不能为空!")
    48  		return self.Redirect("/root/create/administrator/")
    49  	}
    50  
    51  	if len(email) > 0 {
    52  		if helper.CheckEmail(email) == false {
    53  			self.Flash.Error("邮箱格式错误!")
    54  			return self.Redirect("/root/create/administrator/")
    55  		}
    56  
    57  	} else {
    58  		if helper.CheckEmail(username) == true {
    59  			email = username
    60  		} else if helper.CheckUsername(username) == false {
    61  			self.Flash.Error("用户名是为永久性设定,不能少于4个字或多于30个字,请慎重考虑,不能为空!")
    62  			return self.Redirect("/root/create/administrator/")
    63  		}
    64  
    65  	}
    66  
    67  	if len(email) > 0 {
    68  		if usrinfo, err := models.GetUserByEmail(email); (usrinfo != nil) && (err == nil) {
    69  
    70  			if usrinfo, err := models.GetUserByUsername(username); usrinfo != nil {
    71  				self.Flash.Error("此用户名不能使用!")
    72  				return self.Redirect("/root/create/administrator/")
    73  
    74  			} else if err != nil {
    75  
    76  				self.Flash.Error("检索用户名账号期间出错!")
    77  				return self.Redirect("/root/create/administrator/")
    78  
    79  			}
    80  
    81  			self.Flash.Error("此Email不能使用!")
    82  			return self.Redirect("/root/create/administrator/")
    83  
    84  		} else if !((usrinfo == nil) && (err == nil)) {
    85  			self.Flash.Error("检索EMAIL账号期间出错!")
    86  			return self.Redirect("/root/create/administrator/")
    87  
    88  		}
    89  	} else {
    90  		if usrinfo, err := models.GetUserByUsername(username); usrinfo != nil {
    91  
    92  			self.Flash.Error("此用户名已经被注册,请重新命名!")
    93  			return self.Redirect("/root/create/administrator/")
    94  
    95  		} else if err != nil {
    96  
    97  			self.Flash.Error("检索账号数据期间出错!")
    98  			return self.Redirect("/root/create/administrator/")
    99  
   100  		}
   101  	}
   102  
   103  	if usrid, err := models.AddUser(email, username, nickname, "", helper.EncryptHash(password, nil), group, content, mobile, gender, -1000); err != nil || usrid <= 0 {
   104  		self.Flash.Error(fmt.Sprintf("用户注册信息写入数据库时发生错误:%v", err))
   105  		return self.Redirect("/root/create/administrator/")
   106  
   107  	} else {
   108  
   109  		if usrinfo, err := models.GetUser(usrid); err == nil && usrinfo != nil {
   110  			self.Flash.Success("添加用户账号保存成功!")
   111  			return self.Redirect("/root/read/administrator/" + strconv.FormatInt(usrid, 10) + "/")
   112  
   113  		} else {
   114  
   115  			self.Flash.Error("获取用户数据出错!")
   116  			return self.Redirect("/root/create/administrator/")
   117  
   118  		}
   119  
   120  	}
   121  
   122  }