Browse Source

CP user login action

Vova Tkach 6 years ago
parent
commit
cf80511bbc
1 changed files with 51 additions and 1 deletions
  1. 51 1
      modules/module_index.go

+ 51 - 1
modules/module_index.go

@@ -148,6 +148,56 @@ func (this *Modules) RegisterAction_CpFirstUser() *Action {
 	})
 }
 
+func (this *Modules) RegisterAction_CpUserLogin() *Action {
+	return this.newAction(AInfo{
+		WantDB: true,
+		Mount:  "signin",
+	}, func(wrap *wrapper.Wrapper) {
+		pf_email := wrap.R.FormValue("email")
+		pf_password := wrap.R.FormValue("password")
+
+		if pf_email == "" {
+			wrap.MsgError(`Please specify user email`)
+			return
+		}
+
+		if !utils.IsValidEmail(pf_email) {
+			wrap.MsgError(`Please specify correct user email`)
+			return
+		}
+
+		if pf_password == "" {
+			wrap.MsgError(`Please specify user password`)
+			return
+		}
+
+		if wrap.S.GetInt("UserId", 0) > 0 {
+			wrap.MsgError(`You already logined`)
+			return
+		}
+
+		var user_id int
+		err := wrap.DB.QueryRow(
+			"SELECT `id` FROM `users` WHERE `email` = ? and `password` = MD5(?) LIMIT 1;",
+			pf_email, pf_password).Scan(&user_id)
+
+		if err != nil && err != sql.ErrNoRows {
+			wrap.MsgError(err.Error())
+			return
+		}
+
+		if err == sql.ErrNoRows {
+			wrap.MsgError(`Incorrect email or password`)
+			return
+		}
+
+		// Save to current session
+		wrap.S.SetInt("UserId", user_id)
+
+		// Reload current page
+		wrap.Write(`window.location.reload(false);`)
+	})
+}
+
 // All actions here...
-// User login
 // User logout