Skip to content

Commit 62f949f

Browse files
committed
Finish authentication
1 parent 901f3f5 commit 62f949f

File tree

3 files changed

+38
-40
lines changed

3 files changed

+38
-40
lines changed

GoBlog.exe

8.06 MB
Binary file not shown.

goblog.db

32 KB
Binary file not shown.

main.go

Lines changed: 38 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,13 @@ func LoginPage(w http.ResponseWriter, req *http.Request, _ httprouter.Params) {
5151
}
5252

5353
func LoginHandler(w http.ResponseWriter, req *http.Request, p httprouter.Params) {
54-
username := req.FormValue("email")
54+
email := req.FormValue("email")
5555
password := req.FormValue("password")
5656

57-
if verifyUser(w, req, username, password) {
57+
if verifyUser(w, req, email, password) {
5858
http.Redirect(w, req, "/admin/", http.StatusFound)
5959
} else {
60-
http.Redirect(w, req, "/", http.StatusFound)
60+
fmt.Fprintf(w, "Invalid email/password")
6161
}
6262
}
6363

@@ -102,10 +102,10 @@ func SignupPage(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
102102
}
103103

104104
func SignupHandler(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
105-
username := r.FormValue("email")
105+
email := r.FormValue("email")
106106
password := r.FormValue("password")
107107

108-
if addUser(username, password) {
108+
if addUser(email, password) {
109109
fmt.Println("Success!")
110110
http.Redirect(w, r, "/admin/", http.StatusFound)
111111
} else {
@@ -115,20 +115,18 @@ func SignupHandler(w http.ResponseWriter, r *http.Request, ps httprouter.Params)
115115
}
116116

117117
func AdminPage(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
118-
// authenticate username and password
119-
blogname := ps.ByName("blogname")
118+
if getUser(w, r) != "" {
120119

121-
if len(blogname) < 20 {
122-
// create new blog
123-
}
124-
125-
baseT := template.Must(template.New("base").Parse(base))
126-
baseT = template.Must(baseT.Parse(admin))
120+
baseT := template.Must(template.New("base").Parse(base))
121+
baseT = template.Must(baseT.Parse(admin))
127122

128-
baseT.ExecuteTemplate(w, "base", map[string]string{
129-
"PageName": "admin",
130-
"User": getUser(w, r),
131-
})
123+
baseT.ExecuteTemplate(w, "base", map[string]string{
124+
"PageName": "admin",
125+
"User": getUser(w, r),
126+
})
127+
} else {
128+
fmt.Fprintf(w, "You must be authenticated!") // TODO make this look better
129+
}
132130
}
133131

134132
func verifyUser(w http.ResponseWriter, r *http.Request, username string, password string) bool {
@@ -215,42 +213,42 @@ func RandomString() string {
215213
return string(b)
216214
}
217215

218-
var servervalue []byte
219-
220216
func getUser(w http.ResponseWriter, r *http.Request) string {
221217
cookie, err := r.Cookie("goblog")
222-
if cookie != nil && err == nil {
223-
if err != nil {
224-
fmt.Println(err)
225-
}
226-
db, err := bolt.Open("goblog.db", 0600, nil)
227-
if err != nil {
228-
fmt.Println(err)
229-
}
230-
defer db.Close()
231-
db.View(func(tx *bolt.Tx) error {
232-
b := tx.Bucket([]byte("CookieBucket"))
233-
servervalue = b.Get([]byte(cookie.Value))
234-
return nil
235-
})
236-
if servervalue != nil {
237-
if len(servervalue) > 2 {
238-
return string(servervalue)
239-
}
240-
}
218+
if err != nil {
219+
fmt.Println(err) // No cookie
220+
}
221+
if cookie != nil {
222+
return getUserFromCookie(cookie.Value)
223+
}
224+
return ""
225+
}
226+
227+
func getUserFromCookie(value string) string {
228+
servervalue := []byte("")
229+
db, err := bolt.Open("goblog.db", 0600, nil)
230+
if err != nil {
231+
fmt.Println(err)
232+
}
233+
defer db.Close()
234+
db.View(func(tx *bolt.Tx) error {
235+
b := tx.Bucket([]byte("CookieBucket"))
236+
servervalue = b.Get([]byte(value))
237+
return nil
238+
})
239+
if servervalue != nil {
240+
return string(servervalue)
241241
}
242242
return ""
243243
}
244244

245245
func main() {
246246
router := httprouter.New()
247247
router.GET("/", MainPage)
248-
//router.GET("/login/", LoginPage)
249248
router.POST("/login/", LoginHandler)
250249
router.GET("/signup/", SignupPage)
251250
router.POST("/signup/", SignupHandler)
252251
router.GET("/admin/", AdminPage)
253252
router.GET("/logout/", LogoutHandler)
254-
router.GET("/new/:email/:password", SignupHandler) // <- for testing
255253
log.Fatal(http.ListenAndServe(":1338", router))
256254
}

0 commit comments

Comments
 (0)