serviceSelector.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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. }
  17. return []string{}
  18. }
  19. //getEndpoint use to select the correct endpoint
  20. func getEndpoint(coredb *db.Database) oauth2.Endpoint {
  21. idp := readSingleConfig("idp", coredb)
  22. if idp == "Google" {
  23. return googleEndpoint()
  24. } else if idp == "Github" {
  25. return githubEndpoint()
  26. } else if idp == "Microsoft" {
  27. return microsoftEndpoint()
  28. }
  29. return oauth2.Endpoint{}
  30. }
  31. //getUserinfo use to select the correct way to retrieve userinfo
  32. func getUserInfo(accessToken string, coredb *db.Database) (string, error) {
  33. idp := readSingleConfig("idp", coredb)
  34. if idp == "Google" {
  35. return googleUserInfo(accessToken)
  36. } else if idp == "Github" {
  37. return githubUserInfo(accessToken)
  38. } else if idp == "Microsoft" {
  39. return microsoftUserInfo(accessToken)
  40. }
  41. return "", errors.New("Unauthorized")
  42. }