Ejemplo n.º 1
0
// 首页
func Index(context *app.Context) {
	UserId := context.Cookie("UserId")
	if UserId == "" {
		context.Redirect("/login")
	}
	context.Render("index", map[string]interface{}{
		"Host": context.Host,
	})
}
Ejemplo n.º 2
0
Archivo: ws.go Proyecto: vckai/GoAnswer
// 建立websocket连接
func Ws(context *app.Context) {

	UserId := context.Cookie("UserId")
	if UserId == "" {
		fmt.Println("该用户没有登录")
		context.Throw(403, "用户尚未登录")
		return
	}
	nUserId, _ := strconv.Atoi(UserId)
	if nUserId < 1 {
		fmt.Println("UserID转换失败")
		context.Throw(403, "用户ID错误")
		return
	}

	if _, err := server.GetServer().GetOnlineUser(nUserId); err != server.ErrNotExistsOnlineUser {
		fmt.Println("该用户已经连接过了")
		context.Throw(403, "该用户已经连接过了")
		return
	}
	ws, err := websocket.Upgrade(context.Response, context.Request, nil, 1024, 1024)
	if errmsg, ok := err.(websocket.HandshakeError); ok {
		fmt.Println("websocket连接失败,---ERROR:", errmsg)
		context.Throw(403, "Websocket Not handler")
		return
	} else if err != nil {
		fmt.Println("Websocket连接失败,---ERROR:", err)
		context.Throw(403, "WEBSOCKET连接失败")
		return
	}

	c, err := server.NewConn(nUserId, ws)
	if err != nil {
		fmt.Println("创建Conn失败", err)
		context.Throw(403, "创建Conn失败")
		return
	}

	go c.WritePump()
	c.ReadPump()
}
Ejemplo n.º 3
0
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)
}
Ejemplo n.º 4
0
func AdminIndex(context *app.Context) {
	context.Render("admin/index", nil)
}
Ejemplo n.º 5
0
// 注册用户
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,
	})
}
Ejemplo n.º 6
0
// 用户退出
func Logout(context *app.Context) {
	context.Cookie("UserId", "", "-3600")
	context.Redirect("/login")
}
Ejemplo n.º 7
0
// 用户登录
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,
	})
}