@@ -40,6 +40,8 @@ func indexGetHandler(w http.ResponseWriter, r *http.Request) {
40
40
}
41
41
comments , err := client .LRange ("comments" , 0 , 10 ).Result ()
42
42
if err != nil {
43
+ w .WriteHeader (http .StatusInternalServerError )
44
+ w .Write ([]byte ("Internal server error" ))
43
45
return
44
46
}
45
47
templates .ExecuteTemplate (w , "index.html" , comments )
@@ -48,7 +50,12 @@ func indexGetHandler(w http.ResponseWriter, r *http.Request) {
48
50
func indexPostHandler (w http.ResponseWriter , r * http.Request ) {
49
51
r .ParseForm ()
50
52
comment := r .PostForm .Get ("comment" )
51
- client .LPush ("comments" , comment )
53
+ err := client .LPush ("comments" , comment ).Err ()
54
+ if err != nil {
55
+ w .WriteHeader (http .StatusInternalServerError )
56
+ w .Write ([]byte ("Internal server error" ))
57
+ return
58
+ }
52
59
http .Redirect (w , r , "/" , 302 )
53
60
}
54
61
@@ -61,11 +68,17 @@ func loginPostHandler(w http.ResponseWriter, r *http.Request) {
61
68
username := r .PostForm .Get ("username" )
62
69
password := r .PostForm .Get ("password" )
63
70
hash , err := client .Get ("user:" + username ).Bytes ()
64
- if err != nil {
71
+ if err == redis .Nil {
72
+ templates .ExecuteTemplate (w , "login.html" , "unknown user" )
73
+ return
74
+ } else if err != nil {
75
+ w .WriteHeader (http .StatusInternalServerError )
76
+ w .Write ([]byte ("Internal server error" ))
65
77
return
66
78
}
67
79
err = bcrypt .CompareHashAndPassword (hash , []byte (password ))
68
80
if err != nil {
81
+ templates .ExecuteTemplate (w , "login.html" , "invalid login" )
69
82
return
70
83
}
71
84
session , _ := store .Get (r , "session" )
@@ -85,8 +98,15 @@ func registerPostHandler(w http.ResponseWriter, r *http.Request) {
85
98
cost := bcrypt .DefaultCost
86
99
hash , err := bcrypt .GenerateFromPassword ([]byte (password ), cost )
87
100
if err != nil {
101
+ w .WriteHeader (http .StatusInternalServerError )
102
+ w .Write ([]byte ("Internal server error" ))
103
+ return
104
+ }
105
+ err = client .Set ("user:" + username , hash , 0 ).Err ()
106
+ if err != nil {
107
+ w .WriteHeader (http .StatusInternalServerError )
108
+ w .Write ([]byte ("Internal server error" ))
88
109
return
89
110
}
90
- client .Set ("user:" + username , hash , 0 )
91
111
http .Redirect (w , r , "/login" , 302 )
92
112
}
0 commit comments