first commit
This commit is contained in:
73
services/auth/oauth.go
Normal file
73
services/auth/oauth.go
Normal file
@@ -0,0 +1,73 @@
|
||||
package auth
|
||||
|
||||
import (
|
||||
"log"
|
||||
"net/http"
|
||||
|
||||
"github.com/gorilla/sessions"
|
||||
"github.com/markbates/goth"
|
||||
"github.com/markbates/goth/gothic"
|
||||
"github.com/markbates/goth/providers/google"
|
||||
"sismedika.com/sas/westone/configs"
|
||||
)
|
||||
|
||||
var maxAge = 86400 * 1 // 30 days
|
||||
var isProd = false // set to true if in production
|
||||
var key = configs.Envs.SessionKey
|
||||
var store = sessions.NewCookieStore([]byte(key))
|
||||
var usersession = "user"
|
||||
|
||||
func NewOAuth() {
|
||||
googleClientID := configs.Envs.GoogleClientID
|
||||
googleClientSecret := configs.Envs.GoogleClientSecret
|
||||
callback := configs.Envs.PublicHost + ":" + configs.Envs.Port + "/api/v1/auth/google/callback"
|
||||
|
||||
store.MaxAge(maxAge)
|
||||
store.Options.Path = "/"
|
||||
store.Options.HttpOnly = true
|
||||
store.Options.Secure = isProd
|
||||
store.Options.SameSite = http.SameSiteLaxMode
|
||||
|
||||
gothic.Store = store
|
||||
|
||||
goth.UseProviders(
|
||||
google.New(googleClientID, googleClientSecret, callback),
|
||||
)
|
||||
}
|
||||
|
||||
func addUsertoSession(w http.ResponseWriter, r *http.Request, user goth.User) error {
|
||||
user_session, err := store.Get(r, usersession)
|
||||
if err != nil {
|
||||
user_session, err = store.New(r, usersession)
|
||||
if err != nil {
|
||||
log.Println("[ERROR] get user to session, error: ", err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
user.RawData = map[string]interface{}{}
|
||||
user_session.Values["user"] = user
|
||||
err = user_session.Save(r, w)
|
||||
if err != nil {
|
||||
log.Println("[ERROR] saving user to session, error: ", err)
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func removeUsertoSession(w http.ResponseWriter, r *http.Request) error {
|
||||
user_session, err := store.Get(r, usersession)
|
||||
if err != nil {
|
||||
log.Println("[ERROR] get user to session, error: ", err)
|
||||
return err
|
||||
}
|
||||
user_session.Values["user"] = goth.User{}
|
||||
err = user_session.Save(r, w)
|
||||
if err != nil {
|
||||
log.Println("[ERROR] remove user to session, error: ", err)
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user