Skip to content

Commit 555e9c4

Browse files
committed
Added error handling
1 parent 74b6d1d commit 555e9c4

File tree

2 files changed

+26
-3
lines changed

2 files changed

+26
-3
lines changed

Diff for: main.go

+23-3
Original file line numberDiff line numberDiff line change
@@ -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) {
4850
func 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
}

Diff for: templates/login.html

+3
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
<title>Login</title>
44
</head>
55
<body>
6+
{{ if . }}
7+
<div class="error">{{ . }}</div>
8+
{{ end }}
69
<form method="POST">
710
<div>Username: <input name="username"></div>
811
<div>Password: <input name="password"></div>

0 commit comments

Comments
 (0)