github.com/RichardKnop/Go-oauth2-server@v1.0.1/oauth/login.go (about)

     1  package oauth
     2  
     3  import (
     4  	"github.com/RichardKnop/go-oauth2-server/models"
     5  )
     6  
     7  // Login creates an access token and refresh token for a user (logs him/her in)
     8  func (s *Service) Login(client *models.OauthClient, user *models.OauthUser, scope string) (*models.OauthAccessToken, *models.OauthRefreshToken, error) {
     9  	// Return error if user's role is not allowed to use this service
    10  	if !s.IsRoleAllowed(user.RoleID.String) {
    11  		// For security reasons, return a general error message
    12  		return nil, nil, ErrInvalidUsernameOrPassword
    13  	}
    14  
    15  	// Create a new access token
    16  	accessToken, err := s.GrantAccessToken(
    17  		client,
    18  		user,
    19  		s.cnf.Oauth.AccessTokenLifetime, // expires in
    20  		scope,
    21  	)
    22  	if err != nil {
    23  		return nil, nil, err
    24  	}
    25  
    26  	// Create or retrieve a refresh token
    27  	refreshToken, err := s.GetOrCreateRefreshToken(
    28  		client,
    29  		user,
    30  		s.cnf.Oauth.RefreshTokenLifetime, // expires in
    31  		scope,
    32  	)
    33  	if err != nil {
    34  		return nil, nil, err
    35  	}
    36  
    37  	return accessToken, refreshToken, nil
    38  }