@@ -24,20 +24,26 @@ func init() {
2424 defer db .Close ()
2525
2626 db .Update (func (tx * bolt.Tx ) error {
27- _ , err := tx .CreateBucketIfNotExists ([]byte ("UsersBucket" )) // username -> password
27+ _ , err := tx .CreateBucketIfNotExists ([]byte ("UsersBucket" )) // email -> password
2828 if err != nil {
2929 return fmt .Errorf ("Error with UsersBucket: %s" , err )
3030 }
3131 return nil
3232 })
3333 db .Update (func (tx * bolt.Tx ) error {
34- _ , err := tx .CreateBucketIfNotExists ([]byte ("CookieBucket" )) // random string -> username
34+ _ , err := tx .CreateBucketIfNotExists ([]byte ("CookieBucket" )) // random string -> email
3535 if err != nil {
36- return fmt .Errorf ("Error with UsersBucket: %s" , err )
36+ return fmt .Errorf ("Error with CookieBucket: %s" , err )
37+ }
38+ return nil
39+ })
40+ db .Update (func (tx * bolt.Tx ) error {
41+ _ , err := tx .CreateBucketIfNotExists ([]byte ("BlogMappingBucket" )) // random string -> email
42+ if err != nil {
43+ return fmt .Errorf ("Error with BlockMappingBucket: %s" , err )
3744 }
3845 return nil
3946 })
40-
4147}
4248
4349func LoginPage (w http.ResponseWriter , req * http.Request , _ httprouter.Params ) {
@@ -107,6 +113,24 @@ func SignupHandler(w http.ResponseWriter, r *http.Request, ps httprouter.Params)
107113
108114 if addUser (email , password ) {
109115 fmt .Println ("Success!" )
116+ cookie := http.Cookie {Name : "goblog" , Value : RandomString (), Expires : time .Now ().Add (time .Hour * 24 * 7 * 52 ), HttpOnly : true , MaxAge : 50000 , Path : "/" }
117+ http .SetCookie (w , & cookie )
118+ db , err := bolt .Open ("goblog.db" , 0600 , nil )
119+ if err != nil {
120+ fmt .Println (err )
121+ }
122+ defer db .Close ()
123+ if err != nil {
124+ fmt .Println (err )
125+ }
126+ db .Update (func (tx * bolt.Tx ) error {
127+ b := tx .Bucket ([]byte ("CookieBucket" ))
128+ err = b .Put ([]byte (cookie .Value ), []byte (email ))
129+ return err
130+ })
131+ if err != nil {
132+ fmt .Println (err )
133+ }
110134 http .Redirect (w , r , "/admin/" , http .StatusFound )
111135 } else {
112136 fmt .Println ("Failure!" )
@@ -129,7 +153,7 @@ func AdminPage(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
129153 }
130154}
131155
132- func verifyUser (w http.ResponseWriter , r * http.Request , username string , password string ) bool {
156+ func verifyUser (w http.ResponseWriter , r * http.Request , email string , password string ) bool {
133157 correctpass := []byte ("" )
134158 db , err := bolt .Open ("goblog.db" , 0600 , nil )
135159 if err != nil {
@@ -138,7 +162,7 @@ func verifyUser(w http.ResponseWriter, r *http.Request, username string, passwor
138162 defer db .Close ()
139163 db .View (func (tx * bolt.Tx ) error {
140164 b := tx .Bucket ([]byte ("UsersBucket" ))
141- correctpass = b .Get ([]byte (username ))
165+ correctpass = b .Get ([]byte (email ))
142166 return nil
143167 })
144168 if password == string (correctpass ) {
@@ -151,7 +175,7 @@ func verifyUser(w http.ResponseWriter, r *http.Request, username string, passwor
151175
152176 db .Update (func (tx * bolt.Tx ) error {
153177 b := tx .Bucket ([]byte ("CookieBucket" ))
154- err = b .Put ([]byte (cookie .Value ), []byte (username ))
178+ err = b .Put ([]byte (cookie .Value ), []byte (email ))
155179 return err
156180 })
157181 if err != nil {
@@ -162,7 +186,7 @@ func verifyUser(w http.ResponseWriter, r *http.Request, username string, passwor
162186 return false
163187}
164188
165- func addUser (username string , password string ) bool {
189+ func addUser (email string , password string ) bool {
166190 check := []byte ("" )
167191 db , err := bolt .Open ("goblog.db" , 0600 , nil )
168192 if err != nil {
@@ -171,13 +195,13 @@ func addUser(username string, password string) bool {
171195 defer db .Close ()
172196 db .View (func (tx * bolt.Tx ) error {
173197 b := tx .Bucket ([]byte ("UsersBucket" ))
174- check = b .Get ([]byte (username ))
198+ check = b .Get ([]byte (email ))
175199 return nil
176200 })
177201 if check == nil {
178202 db .Update (func (tx * bolt.Tx ) error {
179203 b := tx .Bucket ([]byte ("UsersBucket" ))
180- err := b .Put ([]byte (username ), []byte (password ))
204+ err := b .Put ([]byte (email ), []byte (password ))
181205 return err
182206 })
183207 return true
0 commit comments