HandleUserCallback handles the user oauth callback process.
(c *gin.Context, provider string, clientID string, clientSecret string, success UserSuccessCallback, fail UserFailCallback)
| 111 | |
| 112 | // HandleUserCallback handles the user oauth callback process. |
| 113 | func HandleUserCallback(c *gin.Context, provider string, clientID string, clientSecret string, |
| 114 | success UserSuccessCallback, fail UserFailCallback) { |
| 115 | switch provider { |
| 116 | case "google": |
| 117 | google.StateHandler( |
| 118 | gologin.DebugOnlyCookieConfig, |
| 119 | google.CallbackHandler( |
| 120 | getGoogleConfig(clientID, clientSecret, ""), |
| 121 | googleAuthCallback(c, success, fail), wrapFailCallback(fail)), |
| 122 | ).ServeHTTP(c.Writer, c.Request) |
| 123 | case "facebook": |
| 124 | cfg := getFacebookConfig(clientID, clientSecret, "") |
| 125 | facebook.StateHandler( |
| 126 | gologin.DebugOnlyCookieConfig, |
| 127 | oauth2Login.CallbackHandler(cfg, |
| 128 | facebookAuthCallback(c, success, fail, cfg), wrapFailCallback(fail)), |
| 129 | ).ServeHTTP(c.Writer, c.Request) |
| 130 | case "twitter": |
| 131 | twitter.CallbackHandler( |
| 132 | getTwitterConfig(clientID, clientSecret, ""), |
| 133 | twitterAuthCallback(c, success, fail), wrapFailCallback(fail), |
| 134 | ).ServeHTTP(c.Writer, c.Request) |
| 135 | case "github": |
| 136 | cfg := getGithubConfig(clientID, clientSecret, "") |
| 137 | github.StateHandler( |
| 138 | gologin.DebugOnlyCookieConfig, |
| 139 | oauth2Login.CallbackHandler(cfg, |
| 140 | githubAuthCallback(c, success, fail, cfg), wrapFailCallback(fail)), |
| 141 | ).ServeHTTP(c.Writer, c.Request) |
| 142 | case "weibo": |
| 143 | cfg := getSinaWeiboConfig(clientID, clientSecret, "") |
| 144 | oauth2Login.StateHandler( |
| 145 | gologin.DebugOnlyCookieConfig, |
| 146 | oauth2Login.CallbackHandler(cfg, |
| 147 | sinaWeiboAuthCallback(c, success, fail, cfg), wrapFailCallback(fail)), |
| 148 | ).ServeHTTP(c.Writer, c.Request) |
| 149 | default: |
| 150 | fail(ErrUnsupportedUserAuthProvider) |
| 151 | } |
| 152 | } |
| 153 | |
| 154 | func getGoogleConfig(clientID string, clientSecret string, callback string) *oauth2.Config { |
| 155 | return &oauth2.Config{ |
no test coverage detected