You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
3.3 KiB
64 lines
3.3 KiB
package keycloak
|
|
|
|
import (
|
|
"gopkg.in/h2non/gentleman.v2/plugins/body"
|
|
"gopkg.in/h2non/gentleman.v2/plugins/url"
|
|
)
|
|
|
|
const (
|
|
resetPasswordPath = userIDPath + "/reset-password"
|
|
credentialsPath = userIDPath + "/credentials"
|
|
credentialsTypesPath = realmPath + "/credentialTypes"
|
|
credentialIDPath = "/:credentialID"
|
|
moveFirstPath = credentialIDPath + "/moveToFirst"
|
|
moveAfterPath = credentialIDPath + "/moveAfter/:previousCredentialID"
|
|
)
|
|
|
|
// ResetPassword resets password of the user.
|
|
func (c *Client) ResetPassword(accessToken string, realmName, userID string, cred CredentialRepresentation) error {
|
|
return c.put(accessToken, url.Path(resetPasswordPath), url.Param("realm", realmName), url.Param("id", userID), body.JSON(cred))
|
|
}
|
|
|
|
// GetCredentials returns the list of credentials of the user
|
|
func (c *Client) GetCredentials(accessToken string, realmName string, userID string) ([]CredentialRepresentation, error) {
|
|
var resp = []CredentialRepresentation{}
|
|
|
|
var err = c.get(accessToken, &resp, url.Path(credentialsPath), url.Param("realm", realmName), url.Param("id", userID))
|
|
return resp, err
|
|
}
|
|
|
|
// GetCredentialTypes returns list of credentials types available for the realm
|
|
func (c *Client) GetCredentialTypes(accessToken string, realmName string) ([]string, error) {
|
|
var resp = []string{}
|
|
var err = c.get(accessToken, &resp, url.Path(credentialsTypesPath), url.Param("realm", realmName))
|
|
return resp, err
|
|
}
|
|
|
|
// UpdateCredential updates the credential
|
|
func (c *Client) UpdateCredential(accessToken string, realmName string, userID string, credentialID string, credential CredentialRepresentation) error {
|
|
return c.put(accessToken, url.Path(credentialIDPath), url.Param("realm", realmName), url.Param("id", userID), url.Param("credentialID", credentialID), body.JSON(credential))
|
|
}
|
|
|
|
// DeleteCredential deletes the credential
|
|
func (c *Client) DeleteCredential(accessToken string, realmName string, userID string, credentialID string) error {
|
|
return c.delete(accessToken, url.Path(credentialIDPath), url.Param("realm", realmName), url.Param("id", userID), url.Param("credentialID", credentialID))
|
|
}
|
|
|
|
// MoveToFirst moves the credential at the top of the list
|
|
func (c *Client) MoveToFirst(accessToken string, realmName string, userID string, credentialID string) error {
|
|
_, err := c.post(accessToken, url.Path(moveFirstPath), url.Param("realm", realmName), url.Param("id", userID), url.Param("credentialID", credentialID))
|
|
return err
|
|
}
|
|
|
|
// MoveAfter moves the credential after the specified one into the list
|
|
func (c *Client) MoveAfter(accessToken string, realmName string, userID string, credentialID string, previousCredentialID string) error {
|
|
_, err := c.post(accessToken, url.Path(moveAfterPath), url.Param("realm", realmName), url.Param("id", userID), url.Param("credentialID", credentialID), url.Param("previousCredentialID", previousCredentialID))
|
|
return err
|
|
}
|
|
|
|
// UpdatePassword updates the user's password
|
|
// Parameters: realm, currentPassword, newPassword, confirmPassword
|
|
func (c *Client) UpdatePassword(accessToken, realm, currentPassword, newPassword, confirmPassword string) (string, error) {
|
|
var m = map[string]string{"currentPassword": currentPassword, "newPassword": newPassword, "confirmation": confirmPassword}
|
|
return c.post(accessToken, nil, url.Path(accountPasswordPath), url.Param("realm", realm), body.JSON(m))
|
|
}
|
|
|