@@ -51,13 +51,13 @@ func LoginPage(w http.ResponseWriter, req *http.Request, _ httprouter.Params) {
5151}
5252
5353func 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
104104func 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
117117func 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
134132func 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-
220216func 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
245245func 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