예제 #1
0
파일: home.go 프로젝트: vckai/GoAnswer
// 用户登录
func Login(context *app.Context) {
	UserId := context.Cookie("UserId")
	if UserId != "" {
		context.Redirect("/")
	}
	Msg := ""
	if context.Method == "POST" {
		user := context.String("user")
		if len(user) == 0 {
			Msg = "请输入用户名"
		}
		pwd := context.String("pwd")
		if len(Msg) == 0 && len(pwd) == 0 {
			Msg = "请输入用户密码"
		}
		if len(Msg) == 0 { //登录操作
			user, err := model.GetUser(user)
			if err == nil { //用户存在
				if user.UserPwd == libs.GenPwd(pwd) { //登录成功
					context.Cookie("UserId", strconv.Itoa(user.UserId), strconv.Itoa(EXPTIME))
					context.Redirect("/")
					return
				}
			}
			Msg = "用户或者密码错误"
		}
	}
	context.Render("login", map[string]interface{}{
		"Msg": Msg,
	})
}
예제 #2
0
파일: home.go 프로젝트: vckai/GoAnswer
// 首页
func Index(context *app.Context) {
	UserId := context.Cookie("UserId")
	if UserId == "" {
		context.Redirect("/login")
	}
	context.Render("index", map[string]interface{}{
		"Host": context.Host,
	})
}
예제 #3
0
파일: home.go 프로젝트: vckai/GoAnswer
// 注册用户
func Register(context *app.Context) {
	Msg := ""

	_ = model.GetStatus()

	if context.Method == "POST" {
		user := context.String("user")
		if len(user) == 0 {
			Msg = "请输入用户名"
		}
		if m, _ := regexp.MatchString("[a-zA-Z0-9]{4,20}", user); !m && len(Msg) == 0 {
			Msg = "用户名只能是4-20位字母或者数字"
		}
		pwd := context.String("pwd")
		if len(pwd) == 0 && len(Msg) == 0 {
			Msg = "请输入密码"
		}
		pwd2 := context.String("pwd2")
		if len(Msg) == 0 && len(pwd2) == 0 {
			Msg = "请输入确认密码"
		}
		if len(Msg) == 0 && pwd != pwd2 {
			Msg = "两次输入密码不一致"
		}
		if m, _ := regexp.MatchString("(.*){6,20}", pwd); !m && len(Msg) == 0 {
			Msg = "密码必须为6-20位之间"
		}
		if len(Msg) == 0 { //注册用户
			_, err := model.GetUser(user)
			if err != nil { //没有被注册, 则写入注册信息
				userId, err := model.AddUser(user, libs.GenPwd(pwd), 0, 0, 0)
				if err == nil {
					_ = context.Cookie("UserId", strconv.Itoa(userId), strconv.Itoa(EXPTIME))
					context.Redirect("/")
				} else {
					fmt.Println(err)
					Msg = "注册失败"
				}
			} else {
				Msg = "该用户名已被注册"
			}
		}
	}

	context.Render("register", map[string]interface{}{
		"Msg": Msg,
	})
}
예제 #4
0
파일: admin.go 프로젝트: vckai/GoAnswer
func AdminExam(context *app.Context) {
	if context.Method == "POST" { // post 请求
		question := context.String("question")
		if len(question) == 0 {
			context.Json(map[string]interface{}{"msg": "请输入问题", "suc": -1})
			context.End()
		}
		options := context.Strings("options[]")
		if len(options) != 4 {
			context.Json(map[string]interface{}{"msg": "需要输入4个答题选项", "suc": -2})
			context.End()
		}
		answer := context.String("answer")
		if len(answer) == 0 {
			context.Json(map[string]interface{}{"msg": "请输入正确答案", "suc": -3})
			context.End()
		}
		answerId := -1
		for key, val := range options {
			if len(val) == 0 {
				context.Json(map[string]interface{}{"msg": "不允许空的答题选项", "suc": -4})
				context.End()
			}
			if val == answer {
				answerId = key
			}
		}
		if answerId == -1 {
			context.Json(map[string]interface{}{"msg": "没有在选项中找到正确答案", "suc": -5})
			context.End()
		}
		resolve := context.MustString("resolve", "")
		_, err := model.AddExam(question, options, int8(answerId), resolve)
		if err != nil {
			fmt.Println("isnert error: ", err)
			context.Json(map[string]interface{}{"msg": "添加失败", "suc": -6})
			context.End()
			return
		}

		// 重新加载题目
		server.SetReload(0)
		context.Json(map[string]interface{}{"msg": "", "suc": 1})
		context.End()
	}
	context.Render("admin/exam", nil)
}
예제 #5
0
파일: admin.go 프로젝트: vckai/GoAnswer
func AdminIndex(context *app.Context) {
	context.Render("admin/index", nil)
}