github.com/resonatecoop/id@v1.1.0-43/oauth/grant_type_client_credentials.go (about)

     1  package oauth
     2  
     3  import (
     4  	"net/http"
     5  
     6  	"github.com/resonatecoop/id/oauth/tokentypes"
     7  	"github.com/resonatecoop/user-api/model"
     8  )
     9  
    10  func (s *Service) clientCredentialsGrant(r *http.Request, client *model.Client) (*AccessTokenResponse, error) {
    11  	// Get the scope string
    12  	scope, err := s.GetScope(r.Form.Get("scope"))
    13  	if err != nil {
    14  		return nil, err
    15  	}
    16  
    17  	// Create a new access token
    18  	accessToken, err := s.GrantAccessToken(
    19  		client,
    20  		nil,                             // empty user
    21  		s.cnf.Oauth.AccessTokenLifetime, // expires in
    22  		scope,
    23  	)
    24  	if err != nil {
    25  		return nil, err
    26  	}
    27  
    28  	// Create response
    29  	accessTokenResponse, err := NewAccessTokenResponse(
    30  		accessToken,
    31  		nil, // refresh token
    32  		s.cnf.Oauth.AccessTokenLifetime,
    33  		tokentypes.Bearer,
    34  	)
    35  	if err != nil {
    36  		return nil, err
    37  	}
    38  
    39  	return accessTokenResponse, nil
    40  }