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  }