@@ -40,6 +40,8 @@ func indexGetHandler(w http.ResponseWriter, r *http.Request) {
4040 }
4141 comments , err := client .LRange ("comments" , 0 , 10 ).Result ()
4242 if err != nil {
43+ w .WriteHeader (http .StatusInternalServerError )
44+ w .Write ([]byte ("Internal server error" ))
4345 return
4446 }
4547 templates .ExecuteTemplate (w , "index.html" , comments )
@@ -48,7 +50,12 @@ func indexGetHandler(w http.ResponseWriter, r *http.Request) {
4850func indexPostHandler (w http.ResponseWriter , r * http.Request ) {
4951 r .ParseForm ()
5052 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+ }
5259 http .Redirect (w , r , "/" , 302 )
5360}
5461
@@ -61,11 +68,17 @@ func loginPostHandler(w http.ResponseWriter, r *http.Request) {
6168 username := r .PostForm .Get ("username" )
6269 password := r .PostForm .Get ("password" )
6370 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" ))
6577 return
6678 }
6779 err = bcrypt .CompareHashAndPassword (hash , []byte (password ))
6880 if err != nil {
81+ templates .ExecuteTemplate (w , "login.html" , "invalid login" )
6982 return
7083 }
7184 session , _ := store .Get (r , "session" )
@@ -85,8 +98,15 @@ func registerPostHandler(w http.ResponseWriter, r *http.Request) {
8598 cost := bcrypt .DefaultCost
8699 hash , err := bcrypt .GenerateFromPassword ([]byte (password ), cost )
87100 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" ))
88109 return
89110 }
90- client .Set ("user:" + username , hash , 0 )
91111 http .Redirect (w , r , "/login" , 302 )
92112}
0 commit comments