package api import ( "github.com/nmasse-itix/keycloak-client" "gopkg.in/h2non/gentleman.v2/plugins/body" "gopkg.in/h2non/gentleman.v2/plugins/headers" "gopkg.in/h2non/gentleman.v2/plugins/url" ) const ( resetPasswordPath = userIDPath + "/reset-password" credentialsPath = userIDPath + "/credentials" credentialsTypesPath = realmPath + "/credentialTypes" credentialIDPath = credentialsPath + "/:credentialID" labelPath = credentialIDPath + "/label" moveFirstPath = credentialIDPath + "/moveToFirst" moveAfterPath = credentialIDPath + "/moveAfter/:previousCredentialID" ) var ( hdrAcceptJSON = headers.Set("Accept", "application/json") hdrContentTypeTextPlain = headers.Set("Content-Type", "text/plain") ) // ResetPassword resets password of the user. func (c *Client) ResetPassword(accessToken string, realmName, userID string, cred keycloak.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) ([]keycloak.CredentialRepresentation, error) { var resp = []keycloak.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 } // UpdateLabelCredential updates the label of credential func (c *Client) UpdateLabelCredential(accessToken string, realmName string, userID string, credentialID string, label string) error { return c.put(accessToken, url.Path(labelPath), url.Param("realm", realmName), url.Param("id", userID), url.Param("credentialID", credentialID), body.String(label), hdrAcceptJSON, hdrContentTypeTextPlain) } // 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 }