all repos — quartzgun @ 26dcce986f2e9937d27d6a009d35e364eccf61d6

lightweight web framework in go

auth: add SetData, GetData to UserStore interface, add Login/Logout wrappers
Iris Lightshard nilix@nilfm.cc
PGP Signature
-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEEkFh6dA+k/6CXFXU4O3+8IhROY5gFAmHdI/wACgkQO3+8IhRO
Y5jn1Q/5AQDxjOVFrqX+pBULQy0zbFN/kLIjOHtLcoFbAIb2onOLLFDwPGgldYCU
Z3A2X2clSF6xHSHUHun0qvX3bOBYyt3iTlGTK7AGFJ5EC/c8/zuE724PFHIAwHt8
M5+9wQO+zLmMvG2DDktHiQM9dXSZV3xnDRgyz4zdolwnKDOTJhePom02oNnQylHl
TXsUakCDmwbJC2dmrdwdLzqemBTZOd2AJNtPLJ5g103pLK/PyEy++pTsVoK2dxYf
0J8gliomCN3ICxu5J+ni+QcsKz/JisA5G96Pp+k8F9KlliW6/ho2JTityWIDQRNq
agnbsGp0ig71Tiw3JkKa/UKjgWIpgcx5pQulA8hK6j00ezUq+M4AzifyqyxlN+r0
A83g+50eClp3TH/i5YybJJWPEHImLkjWQFuKAtYvaUJXQq/3K1yPOxjH7EZTtBHG
PIwA/EnrF7fy9JAiytv/FFQ3Yz1KMrUiynkhtKgKxq2swY8hOFTFhfC2RToobq4N
UpNH6gRTZ6bVX9I5t2eIVl1ZBrYuVbu4LSrif0u2sva3mAIrxvgNPKEK3hEwr0cr
e4+HKLqNU+SdYl7f5JhKfU0JLDTc4YsoeSlUyIgMsmyL+CxdaPvO9Gnwk+uUchsJ
NLv3fO9Ejtq0p77/XnQrcFYyE3r5sL9c7hq8DvRVnlnJHpMpVvY=
=Z/T6
-----END PGP SIGNATURE-----
commit

26dcce986f2e9937d27d6a009d35e364eccf61d6

parent

2f6c88c7f3b1332ff754c4c32707b3209052cf53

2 files changed, 43 insertions(+), 6 deletions(-)

jump to
M auth/auth.goauth/auth.go

@@ -2,6 +2,8 @@ package auth

import ( "time" + "net/http" + "nilfm.cc/git/quartzgun/cookie" ) type User struct {

@@ -21,12 +23,26 @@ EndSession(user string) error

AddUser(user string, password string) error DeleteUser(user string) error ChangePassword(user string, oldPassword string, newPassword string) error + SetData(user string, key string, value interface{}) error + GetData(user string, key string) (interface{}, error) } -func Login(user string, password string, userStore UserStore) (string, error) { - //ValidateUser (check user exists, hash and compare password) - //InitiateUserSession (generate token and assign it to the user) - //set username in cookie - //return token, nil - return "", nil +func Login(user string, password string, userStore UserStore, w http.ResponseWriter, t int) error { + session, loginErr := userStore.InitiateSession(user, password) + if loginErr == nil { + cookie.StoreToken("user", user, w, t) + cookie.StoreToken("session", session, w, t) + return nil + } + return loginErr +} + +func Logout(user string, userStore UserStore, w http.ResponseWriter) error { + logoutErr := userStore.EndSession(user) + if logoutErr == nil { + cookie.StoreToken("user", "", w, 0) + cookie.StoreToken("session", "", w, 0) + return nil + } + return logoutErr }
M indentalUserDB/indentalUserDB.goindentalUserDB/indentalUserDB.go

@@ -117,6 +117,27 @@ writeDB(self.Basis, self.Users)

return nil; } +func (self *IndentalUserDB) SetData(user string, key string, value interface{}) error { + if _, exists := self.Users[user]; !exists { + return errors.New("User not in DB") + } + + self.Users[user].Data[key] = value; + return nil; +} + +func (self *IndentalUserDB) GetData(user string, key string) (interface{}, error) { + if _, usrExists := self.Users[user]; !usrExists { + return nil, errors.New("User not in DB") + } + data, exists := self.Users[user].Data[key] + if !exists { + return nil, errors.New("No data key for user") + } + + return data, nil +} + const timeFmt = "2006-01-02T15:04Z" func readDB(filePath string) (map[string]*auth.User, error) {