|
@@ -1,11 +1,12 @@
|
|
package main
|
|
package main
|
|
|
|
|
|
import (
|
|
import (
|
|
- "net/http"
|
|
|
|
- "log"
|
|
|
|
"errors"
|
|
"errors"
|
|
|
|
+ "log"
|
|
|
|
+ "net/http"
|
|
|
|
|
|
auth "imuslab.com/arozos/mod/auth"
|
|
auth "imuslab.com/arozos/mod/auth"
|
|
|
|
+ "imuslab.com/arozos/mod/common"
|
|
)
|
|
)
|
|
|
|
|
|
/*
|
|
/*
|
|
@@ -14,20 +15,20 @@ import (
|
|
This module exists to serve the password restart page with security check
|
|
This module exists to serve the password restart page with security check
|
|
*/
|
|
*/
|
|
|
|
|
|
-func system_resetpw_init(){
|
|
|
|
- http.HandleFunc("/system/reset/validateResetKey", system_resetpw_validateResetKeyHandler);
|
|
|
|
- http.HandleFunc("/system/reset/confirmPasswordReset", system_resetpw_confirmReset);
|
|
|
|
|
|
+func system_resetpw_init() {
|
|
|
|
+ http.HandleFunc("/system/reset/validateResetKey", system_resetpw_validateResetKeyHandler)
|
|
|
|
+ http.HandleFunc("/system/reset/confirmPasswordReset", system_resetpw_confirmReset)
|
|
}
|
|
}
|
|
|
|
|
|
//Validate if the ysername and rkey is valid
|
|
//Validate if the ysername and rkey is valid
|
|
-func system_resetpw_validateResetKeyHandler(w http.ResponseWriter, r *http.Request){
|
|
|
|
|
|
+func system_resetpw_validateResetKeyHandler(w http.ResponseWriter, r *http.Request) {
|
|
username, err := mv(r, "username", true)
|
|
username, err := mv(r, "username", true)
|
|
- if err != nil{
|
|
|
|
|
|
+ if err != nil {
|
|
sendErrorResponse(w, "Invalid username or key")
|
|
sendErrorResponse(w, "Invalid username or key")
|
|
return
|
|
return
|
|
}
|
|
}
|
|
rkey, err := mv(r, "rkey", true)
|
|
rkey, err := mv(r, "rkey", true)
|
|
- if err != nil{
|
|
|
|
|
|
+ if err != nil {
|
|
sendErrorResponse(w, "Invalid username or key")
|
|
sendErrorResponse(w, "Invalid username or key")
|
|
return
|
|
return
|
|
}
|
|
}
|
|
@@ -39,7 +40,7 @@ func system_resetpw_validateResetKeyHandler(w http.ResponseWriter, r *http.Reque
|
|
|
|
|
|
//Check if the pair is valid
|
|
//Check if the pair is valid
|
|
err = system_resetpw_validateResetKey(username, rkey)
|
|
err = system_resetpw_validateResetKey(username, rkey)
|
|
- if err != nil{
|
|
|
|
|
|
+ if err != nil {
|
|
sendErrorResponse(w, err.Error())
|
|
sendErrorResponse(w, err.Error())
|
|
return
|
|
return
|
|
}
|
|
}
|
|
@@ -48,68 +49,68 @@ func system_resetpw_validateResetKeyHandler(w http.ResponseWriter, r *http.Reque
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
-func system_resetpw_confirmReset(w http.ResponseWriter, r *http.Request){
|
|
|
|
|
|
+func system_resetpw_confirmReset(w http.ResponseWriter, r *http.Request) {
|
|
username, _ := mv(r, "username", true)
|
|
username, _ := mv(r, "username", true)
|
|
rkey, _ := mv(r, "rkey", true)
|
|
rkey, _ := mv(r, "rkey", true)
|
|
newpw, _ := mv(r, "pw", true)
|
|
newpw, _ := mv(r, "pw", true)
|
|
- if (username == "" || rkey == "" || newpw == ""){
|
|
|
|
|
|
+ if username == "" || rkey == "" || newpw == "" {
|
|
sendErrorResponse(w, "Internal Server Error")
|
|
sendErrorResponse(w, "Internal Server Error")
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
//Check user exists
|
|
//Check user exists
|
|
- if !authAgent.UserExists(username){
|
|
|
|
|
|
+ if !authAgent.UserExists(username) {
|
|
sendErrorResponse(w, "Username not exists")
|
|
sendErrorResponse(w, "Username not exists")
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
//Validate rkey
|
|
//Validate rkey
|
|
err := system_resetpw_validateResetKey(username, rkey)
|
|
err := system_resetpw_validateResetKey(username, rkey)
|
|
- if err != nil{
|
|
|
|
|
|
+ if err != nil {
|
|
sendErrorResponse(w, err.Error())
|
|
sendErrorResponse(w, err.Error())
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
//OK to procced
|
|
//OK to procced
|
|
newHashedPassword := auth.Hash(newpw)
|
|
newHashedPassword := auth.Hash(newpw)
|
|
- err = sysdb.Write("auth", "passhash/" + username, newHashedPassword)
|
|
|
|
- if err != nil{
|
|
|
|
|
|
+ err = sysdb.Write("auth", "passhash/"+username, newHashedPassword)
|
|
|
|
+ if err != nil {
|
|
sendErrorResponse(w, err.Error())
|
|
sendErrorResponse(w, err.Error())
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
- sendOK(w);
|
|
|
|
|
|
+ sendOK(w)
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
-func system_resetpw_validateResetKey(username string, key string) error{
|
|
|
|
|
|
+func system_resetpw_validateResetKey(username string, key string) error {
|
|
//Get current password from db
|
|
//Get current password from db
|
|
passwordInDB := ""
|
|
passwordInDB := ""
|
|
- err := sysdb.Read("auth", "passhash/" + username, &passwordInDB)
|
|
|
|
- if err != nil{
|
|
|
|
|
|
+ err := sysdb.Read("auth", "passhash/"+username, &passwordInDB)
|
|
|
|
+ if err != nil {
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
|
|
|
|
//Get hashed user key
|
|
//Get hashed user key
|
|
hashedKey := auth.Hash(key)
|
|
hashedKey := auth.Hash(key)
|
|
- if (passwordInDB != hashedKey){
|
|
|
|
|
|
+ if passwordInDB != hashedKey {
|
|
return errors.New("Invalid Password Reset Key")
|
|
return errors.New("Invalid Password Reset Key")
|
|
}
|
|
}
|
|
|
|
|
|
return nil
|
|
return nil
|
|
}
|
|
}
|
|
|
|
|
|
-func system_resetpw_handlePasswordReset(w http.ResponseWriter, r *http.Request){
|
|
|
|
|
|
+func system_resetpw_handlePasswordReset(w http.ResponseWriter, r *http.Request) {
|
|
//Check if the user click on this link with reset password key string. If not, ask the user to input one
|
|
//Check if the user click on this link with reset password key string. If not, ask the user to input one
|
|
acc, err := mv(r, "acc", false)
|
|
acc, err := mv(r, "acc", false)
|
|
if err != nil || acc == "" {
|
|
if err != nil || acc == "" {
|
|
- system_resetpw_serveIdEnterInterface(w,r);
|
|
|
|
|
|
+ system_resetpw_serveIdEnterInterface(w, r)
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
resetkey, err := mv(r, "rkey", false)
|
|
resetkey, err := mv(r, "rkey", false)
|
|
if err != nil || resetkey == "" {
|
|
if err != nil || resetkey == "" {
|
|
- system_resetpw_serveIdEnterInterface(w,r);
|
|
|
|
|
|
+ system_resetpw_serveIdEnterInterface(w, r)
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
@@ -122,28 +123,28 @@ func system_resetpw_handlePasswordReset(w http.ResponseWriter, r *http.Request){
|
|
|
|
|
|
//OK. Create the New Password Entering UI
|
|
//OK. Create the New Password Entering UI
|
|
imageBase64, _ := LoadImageAsBase64("./web/" + iconVendor)
|
|
imageBase64, _ := LoadImageAsBase64("./web/" + iconVendor)
|
|
- template, err := template_load("system/reset/resetPasswordTemplate.html",map[string]interface{}{
|
|
|
|
|
|
+ template, err := common.Templateload("system/reset/resetPasswordTemplate.html", map[string]interface{}{
|
|
"vendor_logo": imageBase64,
|
|
"vendor_logo": imageBase64,
|
|
- "host_name": *host_name,
|
|
|
|
- "username": acc,
|
|
|
|
- "rkey": resetkey,
|
|
|
|
- });
|
|
|
|
- if err != nil{
|
|
|
|
- log.Fatal(err);
|
|
|
|
|
|
+ "host_name": *host_name,
|
|
|
|
+ "username": acc,
|
|
|
|
+ "rkey": resetkey,
|
|
|
|
+ })
|
|
|
|
+ if err != nil {
|
|
|
|
+ log.Fatal(err)
|
|
}
|
|
}
|
|
w.Header().Set("Content-Type", "text/html; charset=UTF-8")
|
|
w.Header().Set("Content-Type", "text/html; charset=UTF-8")
|
|
w.Write([]byte(template))
|
|
w.Write([]byte(template))
|
|
}
|
|
}
|
|
|
|
|
|
-func system_resetpw_serveIdEnterInterface(w http.ResponseWriter, r *http.Request){
|
|
|
|
|
|
+func system_resetpw_serveIdEnterInterface(w http.ResponseWriter, r *http.Request) {
|
|
//Reset Key or Username not found, Serve entering interface
|
|
//Reset Key or Username not found, Serve entering interface
|
|
imageBase64, _ := LoadImageAsBase64("./web/" + iconVendor)
|
|
imageBase64, _ := LoadImageAsBase64("./web/" + iconVendor)
|
|
- template, err := template_load("system/reset/resetCodeTemplate.html",map[string]interface{}{
|
|
|
|
|
|
+ template, err := common.Templateload("system/reset/resetCodeTemplate.html", map[string]interface{}{
|
|
"vendor_logo": imageBase64,
|
|
"vendor_logo": imageBase64,
|
|
- "host_name": *host_name,
|
|
|
|
- });
|
|
|
|
- if err != nil{
|
|
|
|
- log.Fatal(err);
|
|
|
|
|
|
+ "host_name": *host_name,
|
|
|
|
+ })
|
|
|
|
+ if err != nil {
|
|
|
|
+ log.Fatal(err)
|
|
}
|
|
}
|
|
w.Header().Set("Content-Type", "text/html; charset=UTF-8")
|
|
w.Header().Set("Content-Type", "text/html; charset=UTF-8")
|
|
w.Write([]byte(template))
|
|
w.Write([]byte(template))
|