github.com/liamawhite/cli-with-i18n@v6.32.1-0.20171122084555-dede0a5c3448+incompatible/util/configv3/user.go (about)

     1  package configv3
     2  
     3  import "github.com/SermoDigital/jose/jws"
     4  
     5  // User represents the user information provided by the JWT access token
     6  type User struct {
     7  	Name string
     8  }
     9  
    10  // CurrentUser returns user information decoded from the JWT access token in
    11  // .cf/config.json
    12  func (config *Config) CurrentUser() (User, error) {
    13  	return decodeUserFromJWT(config.ConfigFile.AccessToken)
    14  }
    15  
    16  func decodeUserFromJWT(accessToken string) (User, error) {
    17  	if accessToken == "" {
    18  		return User{}, nil
    19  	}
    20  
    21  	token, err := jws.ParseJWT([]byte(accessToken[7:]))
    22  	if err != nil {
    23  		return User{}, err
    24  	}
    25  
    26  	claims := token.Claims()
    27  	return User{
    28  		Name: claims.Get("user_name").(string),
    29  	}, nil
    30  }