@@ -2,6 +2,7 @@ package index
2
2
3
3
import (
4
4
"encoding/json"
5
+ "fmt"
5
6
"net/http"
6
7
"strings"
7
8
"time"
@@ -16,14 +17,24 @@ import (
16
17
"github.com/labstack/echo/v4"
17
18
)
18
19
20
+ const (
21
+ LoginPasswdErr = "wrong password"
22
+ LoginUserErr = "user does not exist"
23
+ LoginDbErr = "database connection failed"
24
+ LoginInputErr = "username and password cannot be empty"
25
+ LoginExpired = "User not logged in or login expired"
26
+ )
27
+
28
+ var LoginErrors = []string {LoginPasswdErr , LoginUserErr , LoginDbErr , LoginInputErr , LoginExpired }
29
+
19
30
func InitRouter () {
20
31
21
32
// 系统首页
22
33
webserver .GET ("/" , func (c echo.Context ) error {
23
34
sess , _ := session .Get (webserver .UserSession , c )
24
35
username := sess .Values [webserver .UserSessionName ]
25
36
if username == nil || username == "" {
26
- return c .Redirect (http .StatusTemporaryRedirect , "/login?errmsg=User not logged in or login expired" )
37
+ return c .Redirect (http .StatusTemporaryRedirect , fmt . Sprintf ( "/login?errmsg=%s" , LoginExpired ) )
27
38
}
28
39
return c .Render (http .StatusOK , "index" , map [string ]interface {}{})
29
40
})
@@ -73,6 +84,10 @@ func InitRouter() {
73
84
// 登录页面
74
85
webserver .GET ("/login" , func (c echo.Context ) error {
75
86
errmsg := c .QueryParam ("errmsg" )
87
+ // errmsg must in LoginErrors
88
+ if ! common .InSlice (errmsg , LoginErrors ) {
89
+ errmsg = ""
90
+ }
76
91
return c .Render (http .StatusOK , "login" , map [string ]interface {}{
77
92
"errmsg" : errmsg ,
78
93
"LoginLogo" : "/static/images/login-logo.png" ,
@@ -102,19 +117,19 @@ func InitRouter() {
102
117
username := c .FormValue ("username" )
103
118
password := c .FormValue ("password" )
104
119
if username == "" || password == "" {
105
- return c .Redirect (http .StatusMovedPermanently , "/login?errmsg=Username and password cannot be empty" )
120
+ return c .Redirect (http .StatusMovedPermanently , fmt . Sprintf ( "/login?errmsg=%s" , LoginInputErr ) )
106
121
}
107
122
var user models.SysOpr
108
123
err := app .GDB ().Where ("username=?" , username ).First (& user ).Error
109
124
if err != nil {
110
125
if strings .Contains (err .Error (), "dial error" ) {
111
- return c .Redirect (http .StatusMovedPermanently , "/login?errmsg=Database connection failed" )
126
+ return c .Redirect (http .StatusMovedPermanently , fmt . Sprintf ( "/login?errmsg=%s" , LoginDbErr ) )
112
127
}
113
- return c .Redirect (http .StatusMovedPermanently , "/login?errmsg=User does not exist" )
128
+ return c .Redirect (http .StatusMovedPermanently , fmt . Sprintf ( "/login?errmsg=%s" , LoginUserErr ) )
114
129
}
115
130
116
131
if common .Sha256HashWithSalt (password , common .SecretSalt ) != user .Password {
117
- return c .Redirect (http .StatusMovedPermanently , "/login?errmsg=wrong password" )
132
+ return c .Redirect (http .StatusMovedPermanently , fmt . Sprintf ( "/login?errmsg=%s" , LoginPasswdErr ) )
118
133
}
119
134
120
135
sess , _ := session .Get (webserver .UserSession , c )
0 commit comments