github.com/billybanfield/evergreen@v0.0.0-20170525200750-eeee692790f7/auth/crowd.go (about) 1 package auth 2 3 import ( 4 "net/http" 5 6 "github.com/evergreen-ci/crowd" 7 "github.com/evergreen-ci/evergreen" 8 ) 9 10 // CrowdUserManager handles authentication with Atlassian Crowd. 11 type CrowdUserManager struct { 12 *crowd.Client 13 } 14 15 // NewCrowdUserManager creates a manager for the user and password combination that 16 // connects to the crowd service at the given URL. 17 func NewCrowdUserManager(conf *evergreen.CrowdConfig) (*CrowdUserManager, error) { 18 crowdClient, err := crowd.NewClient(conf.Username, conf.Password, conf.Urlroot) 19 if err != nil { 20 return nil, err 21 } 22 return &CrowdUserManager{crowdClient}, nil 23 } 24 25 // GetUserByToken returns the user for the supplied token, or an 26 // error if the user is not found. 27 func (c *CrowdUserManager) GetUserByToken(token string) (User, error) { 28 user, err := c.GetUserFromToken(token) 29 if err != nil { 30 return nil, err 31 } 32 return &simpleUser{ 33 user.Name, //UserId 34 user.DispName, //Name 35 user.EmailAddress, //Email 36 }, nil 37 } 38 39 // CreateUserToken creates a user session in crowd. This session token is returned. 40 func (c *CrowdUserManager) CreateUserToken(username, password string) (string, error) { 41 session, err := c.CreateSession(username, password) 42 if err != nil { 43 return "", err 44 } 45 return session.Token, nil 46 } 47 48 func (*CrowdUserManager) GetLoginHandler(string) func(http.ResponseWriter, *http.Request) { 49 return nil 50 } 51 52 func (*CrowdUserManager) GetLoginCallbackHandler() func(http.ResponseWriter, *http.Request) { 53 return nil 54 } 55 56 func (*CrowdUserManager) IsRedirect() bool { 57 return false 58 }