github.com/mattermost/mattermost-server/v6@v6.7.2/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/v6/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  }