serviceSelector.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package oauth2
  2. import (
  3. "errors"
  4. "golang.org/x/oauth2"
  5. db "imuslab.com/arozos/mod/database"
  6. )
  7. //getScope use to select the correct scope
  8. func getScope(coredb *db.Database) []string {
  9. idp := readSingleConfig("idp", coredb)
  10. if idp == "Google" {
  11. return googleScope()
  12. } else if idp == "Github" {
  13. return githubScope()
  14. } else if idp == "Microsoft" {
  15. return microsoftScope()
  16. } else if idp == "Gitlab" {
  17. return gitlabScope()
  18. }
  19. return []string{}
  20. }
  21. //getEndpoint use to select the correct endpoint
  22. func getEndpoint(coredb *db.Database) oauth2.Endpoint {
  23. idp := readSingleConfig("idp", coredb)
  24. if idp == "Google" {
  25. return googleEndpoint()
  26. } else if idp == "Github" {
  27. return githubEndpoint()
  28. } else if idp == "Microsoft" {
  29. return microsoftEndpoint()
  30. } else if idp == "Gitlab" {
  31. return gitlabEndpoint(readSingleConfig("serverurl", coredb))
  32. }
  33. return oauth2.Endpoint{}
  34. }
  35. //getUserinfo use to select the correct way to retrieve userinfo
  36. func getUserInfo(accessToken string, coredb *db.Database) (string, error) {
  37. idp := readSingleConfig("idp", coredb)
  38. if idp == "Google" {
  39. return googleUserInfo(accessToken)
  40. } else if idp == "Github" {
  41. return githubUserInfo(accessToken)
  42. } else if idp == "Microsoft" {
  43. return microsoftUserInfo(accessToken)
  44. } else if idp == "Gitlab" {
  45. return gitlabUserInfo(accessToken, readSingleConfig("serverurl", coredb))
  46. }
  47. return "", errors.New("Unauthorized")
  48. }