github.com/wanliu/go-oauth2-server@v0.0.0-20180817021415-f928fa1580df/oauth/login.go (about) 1 package oauth 2 3 import ( 4 "github.com/wanliu/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 }