Add the module name after the path to the repo and simply name it ersteller
This commit is contained in:
@@ -6,8 +6,8 @@ import (
|
||||
"encoding/base64"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"git.gorlug.de/code/golang/ersteller-lib"
|
||||
"git.gorlug.de/code/golang/ersteller-lib/authentication"
|
||||
"git.gorlug.de/code/golang/ersteller-lib/ersteller"
|
||||
"git.gorlug.de/code/golang/ersteller-lib/ersteller/authentication"
|
||||
"github.com/gorilla/sessions"
|
||||
"github.com/labstack/echo/v4"
|
||||
"golang.org/x/oauth2"
|
||||
@@ -35,7 +35,7 @@ type Auth struct {
|
||||
isLocal bool
|
||||
userRepo authentication.UserRepository
|
||||
sessionStore *sessions.CookieStore
|
||||
GoogleLoginRoute ersteller_lib.Route
|
||||
GoogleLoginRoute ersteller.Route
|
||||
environment AuthEnv
|
||||
}
|
||||
|
||||
@@ -64,10 +64,10 @@ func (a *Auth) GetAuthURL(state string) string {
|
||||
func (a *Auth) ParseUserData(code string) (GoogleUserData, error) {
|
||||
data, err := a.getUserDataFromGoogle(code)
|
||||
if err != nil {
|
||||
ersteller_lib.LogError("failed getting user data from Google: %v", err)
|
||||
ersteller.LogError("failed getting user data from Google: %v", err)
|
||||
return GoogleUserData{}, err
|
||||
}
|
||||
ersteller_lib.LogDebug("user data: %v", data)
|
||||
ersteller.LogDebug("user data: %v", data)
|
||||
return data, nil
|
||||
}
|
||||
|
||||
@@ -75,25 +75,25 @@ func (a *Auth) getUserDataFromGoogle(code string) (GoogleUserData, error) {
|
||||
// Use code to get token and get user info from Google.
|
||||
token, err := a.Config.Exchange(context.Background(), code)
|
||||
if err != nil {
|
||||
ersteller_lib.LogError("code exchange wrong: %v", err)
|
||||
ersteller.LogError("code exchange wrong: %v", err)
|
||||
return GoogleUserData{}, err
|
||||
}
|
||||
|
||||
response, err := http.Get(oauthGoogleUrlAPI + token.AccessToken)
|
||||
if err != nil {
|
||||
ersteller_lib.LogError("failed getting user info: %v", err)
|
||||
ersteller.LogError("failed getting user info: %v", err)
|
||||
return GoogleUserData{}, nil
|
||||
}
|
||||
defer response.Body.Close()
|
||||
contents, err := ioutil.ReadAll(response.Body)
|
||||
if err != nil {
|
||||
ersteller_lib.LogError("failed read response: %v", err)
|
||||
ersteller.LogError("failed read response: %v", err)
|
||||
return GoogleUserData{}, nil
|
||||
}
|
||||
userData := GoogleUserData{}
|
||||
err = json.Unmarshal(contents, &userData)
|
||||
if err != nil {
|
||||
ersteller_lib.LogError("failed to unmarshal user data: %v", err)
|
||||
ersteller.LogError("failed to unmarshal user data: %v", err)
|
||||
return GoogleUserData{}, nil
|
||||
}
|
||||
userData.Token = token
|
||||
@@ -102,10 +102,10 @@ func (a *Auth) getUserDataFromGoogle(code string) (GoogleUserData, error) {
|
||||
}
|
||||
|
||||
func (a *Auth) SaveCredentials(userId int, token *oauth2.Token) error {
|
||||
ersteller_lib.Debug("saving google credentials for user ", userId)
|
||||
ersteller.Debug("saving google credentials for user ", userId)
|
||||
googleAuth, err := a.repo.ReadByUserId(userId)
|
||||
if err != nil {
|
||||
ersteller_lib.LogDebug("no GoogleAuth found for user %d, creating new one", userId)
|
||||
ersteller.LogDebug("no GoogleAuth found for user %d, creating new one", userId)
|
||||
_, err = a.repo.Create(GoogleAuth{
|
||||
UserId: userId,
|
||||
Credentials: Credentials{
|
||||
@@ -121,11 +121,11 @@ func (a *Auth) SaveCredentials(userId int, token *oauth2.Token) error {
|
||||
func (a *Auth) GetCredentials(userId int) (*oauth2.Token, error) {
|
||||
credentials, err := a.repo.ReadByUserId(userId)
|
||||
if err != nil {
|
||||
ersteller_lib.LogError("failed to get credentials for user %d: %v", userId, err)
|
||||
ersteller.LogError("failed to get credentials for user %d: %v", userId, err)
|
||||
return nil, err
|
||||
}
|
||||
if credentials.Credentials.Token.AccessToken == "" {
|
||||
ersteller_lib.LogError("no credentials found for user %d", userId)
|
||||
ersteller.LogError("no credentials found for user %d", userId)
|
||||
return nil, errors.New("no credentials found")
|
||||
}
|
||||
return &credentials.Credentials.Token, nil
|
||||
@@ -135,25 +135,25 @@ const oAuthStateCookieName = "oauthstate"
|
||||
const GoogleLogin = "/login/google"
|
||||
const GoogleLoginCallback = "/email/authenticated"
|
||||
|
||||
func (a *Auth) AddRoutes(e *echo.Echo) []ersteller_lib.Route {
|
||||
googleLoginRoute := ersteller_lib.NewGetRoute(GoogleLogin, func(c echo.Context) error {
|
||||
func (a *Auth) AddRoutes(e *echo.Echo) []ersteller.Route {
|
||||
googleLoginRoute := ersteller.NewGetRoute(GoogleLogin, func(c echo.Context) error {
|
||||
state := a.generateStateOauthCookie(c.Response())
|
||||
ersteller_lib.LogDebug("Value: %v", state)
|
||||
ersteller.LogDebug("Value: %v", state)
|
||||
authenticationUrl := a.GetAuthURL(state)
|
||||
return c.Redirect(http.StatusTemporaryRedirect, authenticationUrl)
|
||||
})
|
||||
googleLoginRoute.Add(e)
|
||||
a.GoogleLoginRoute = googleLoginRoute
|
||||
|
||||
authenticatedRoute := ersteller_lib.NewGetRoute(GoogleLoginCallback, func(c echo.Context) error {
|
||||
ersteller_lib.LogDebug("email authenticated called")
|
||||
authenticatedRoute := ersteller.NewGetRoute(GoogleLoginCallback, func(c echo.Context) error {
|
||||
ersteller.LogDebug("email authenticated called")
|
||||
oauthstate, err := c.Cookie(oAuthStateCookieName)
|
||||
if err != nil {
|
||||
ersteller_lib.LogError("Failed to get cookie: %v", err)
|
||||
ersteller.LogError("Failed to get cookie: %v", err)
|
||||
return err
|
||||
}
|
||||
if c.FormValue("state") != oauthstate.Value {
|
||||
ersteller_lib.LogError("Failed to verify google oauth state")
|
||||
ersteller.LogError("Failed to verify google oauth state")
|
||||
return err
|
||||
}
|
||||
code := c.FormValue("code")
|
||||
@@ -163,10 +163,10 @@ func (a *Auth) AddRoutes(e *echo.Echo) []ersteller_lib.Route {
|
||||
}
|
||||
userId, err := a.userRepo.GetUserId(data.Email)
|
||||
if err != nil {
|
||||
ersteller_lib.LogError("Failed to get user id: %v", err)
|
||||
ersteller.LogError("Failed to get user id: %v", err)
|
||||
userId, err = a.userRepo.CreateFromEmail(data.Email)
|
||||
if err != nil {
|
||||
ersteller_lib.LogError("Failed to create user: %v", err)
|
||||
ersteller.LogError("Failed to create user: %v", err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
@@ -176,36 +176,36 @@ func (a *Auth) AddRoutes(e *echo.Echo) []ersteller_lib.Route {
|
||||
}
|
||||
err = a.SaveCredentials(userId, data.Token)
|
||||
if err != nil {
|
||||
ersteller_lib.Error("failed to save credentials for user ", userId, ": ", err)
|
||||
ersteller.Error("failed to save credentials for user ", userId, ": ", err)
|
||||
return err
|
||||
}
|
||||
ersteller_lib.Debug("saved credentials for user", userId)
|
||||
ersteller.Debug("saved credentials for user", userId)
|
||||
return c.Redirect(http.StatusTemporaryRedirect, "/")
|
||||
})
|
||||
authenticatedRoute.Add(e)
|
||||
|
||||
logoutRoute := ersteller_lib.NewGetRoute("/logout", func(c echo.Context) error {
|
||||
logoutRoute := ersteller.NewGetRoute("/logout", func(c echo.Context) error {
|
||||
// Clear the session
|
||||
session, err := a.sessionStore.Get(c.Request(), a.environment.SessionName)
|
||||
if err != nil {
|
||||
ersteller_lib.LogError("Failed to get session: %v", err)
|
||||
ersteller.LogError("Failed to get session: %v", err)
|
||||
return c.Redirect(http.StatusTemporaryRedirect, "/")
|
||||
}
|
||||
session.Options.MaxAge = -1
|
||||
err = session.Save(c.Request(), c.Response())
|
||||
if err != nil {
|
||||
ersteller_lib.LogError("Failed to save session: %v", err)
|
||||
ersteller.LogError("Failed to save session: %v", err)
|
||||
return err
|
||||
}
|
||||
return c.Redirect(http.StatusTemporaryRedirect, "/")
|
||||
})
|
||||
logoutRoute.Add(e)
|
||||
return []ersteller_lib.Route{googleLoginRoute, authenticatedRoute, logoutRoute}
|
||||
return []ersteller.Route{googleLoginRoute, authenticatedRoute, logoutRoute}
|
||||
}
|
||||
func (a *Auth) saveEmailToSessionStore(c echo.Context, email string, userId int) error {
|
||||
session, err := a.sessionStore.New(c.Request(), a.environment.SessionName)
|
||||
if err != nil {
|
||||
ersteller_lib.LogError("Failed to create session: %v", err)
|
||||
ersteller.LogError("Failed to create session: %v", err)
|
||||
return err
|
||||
}
|
||||
session.Values = map[interface{}]interface{}{
|
||||
@@ -214,7 +214,7 @@ func (a *Auth) saveEmailToSessionStore(c echo.Context, email string, userId int)
|
||||
}
|
||||
err = session.Save(c.Request(), c.Response())
|
||||
if err != nil {
|
||||
ersteller_lib.LogError("Failed to save session: %v", err)
|
||||
ersteller.LogError("Failed to save session: %v", err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
@@ -224,7 +224,7 @@ func (a *Auth) generateStateOauthCookie(w http.ResponseWriter) string {
|
||||
b := make([]byte, 16)
|
||||
_, err := rand.Read(b)
|
||||
if err != nil {
|
||||
ersteller_lib.LogError("Failed to read random state: %v", err)
|
||||
ersteller.LogError("Failed to read random state: %v", err)
|
||||
}
|
||||
state := base64.URLEncoding.EncodeToString(b)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user