github.com/mattermost/mattermost-server/server/v8@v8.0.0-20230610055354-a6d1d38b273d/einterfaces/oauthproviders.go (about) 1 // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. 2 // See LICENSE.txt for license information. 3 4 package einterfaces 5 6 import ( 7 "io" 8 9 "github.com/mattermost/mattermost-server/server/public/model" 10 ) 11 12 type OAuthProvider interface { 13 GetUserFromJSON(data io.Reader, tokenUser *model.User) (*model.User, error) 14 GetSSOSettings(config *model.Config, service string) (*model.SSOSettings, error) 15 GetUserFromIdToken(idToken string) (*model.User, error) 16 IsSameUser(dbUser, oAuthUser *model.User) bool 17 } 18 19 var oauthProviders = make(map[string]OAuthProvider) 20 21 func RegisterOAuthProvider(name string, newProvider OAuthProvider) { 22 oauthProviders[name] = newProvider 23 } 24 25 func GetOAuthProvider(name string) OAuthProvider { 26 provider, ok := oauthProviders[name] 27 if ok { 28 return provider 29 } 30 return nil 31 }