@@ -195,59 +195,60 @@ INPUT::
"userid" : "<user_id or username>",
}
OUTPUT::
id : <id_given_in_input>
result : {
"ip_addr_server": <ip_from_clien>",
"user_ips": [
{
"ip_addr": "<ip_with_mask>",
"ip_range": ["<start_ip>", "<end_ip>"],
},
...
]
error : null
get_user
--------
Get's an user by username or user_id, Returns empty result if user is not found.
If userid param is skipped it is set to id of user who is calling this method.
This command can be executed only using api_key belonging to user with admin
rights.
rights, or regular users which cannot specify userid parameter.
INPUT::
id : <id_for_response>
api_key : "<api_key>"
method : "get_user"
args : {
"userid" : "<username or user_id>"
"userid" : "<username or user_id Optional(=apiuser)>"
result: None if user does not exist or
"user_id" : "<user_id>",
"username" : "<username>",
"firstname": "<firstname>",
"lastname" : "<lastname>",
"email" : "<email>",
"emails": "<list_of_all_additional_emails>",
"ip_addresses": "<list_of_ip_addresses_for_user>",
"active" : "<bool>",
"admin" : "<bool>",
"ldap_dn" : "<ldap_dn>",
"last_login": "<last_login>",
"permissions": {
"global": ["hg.create.repository",
"repository.read",
"hg.register.manual_activate"],
"repositories": {"repo1": "repository.none"},
"repositories_groups": {"Group1": "group.read"}
@@ -330,56 +331,56 @@ OUTPUT::
error: null
update_user
-----------
updates given user if such user exists. This command can
be executed only using api_key belonging to user with admin rights.
method : "update_user"
"username" : "<username> = Optional",
"email" : "<useremail> = Optional",
"password" : "<password> = Optional",
"firstname" : "<firstname> = Optional",
"lastname" : "<lastname> = Optional",
"active" : "<bool> = Optional",
"admin" : "<bool> = Optional",
"ldap_dn" : "<ldap_dn> = Optional"
"username" : "<username> = Optional(None)",
"email" : "<useremail> = Optional(None)",
"password" : "<password> = Optional(None)",
"firstname" : "<firstname> = Optional(None)",
"lastname" : "<lastname> = Optional(None)",
"active" : "<bool> = Optional(None)",
"admin" : "<bool> = Optional(None)",
"ldap_dn" : "<ldap_dn> = Optional(None)"
result: {
"msg" : "updated user ID:<userid> <username>",
"user": {
delete_user
@@ -201,94 +201,101 @@ class ApiController(JSONRPCController):
raise JSONRPCError(
'Error occurred during rescan repositories action'
)
def lock(self, apiuser, repoid, locked, userid=Optional(OAttr('apiuser'))):
"""
Set locking state on particular repository by given user, if
this command is runned by non-admin account userid is set to user
who is calling this method
:param apiuser:
:param repoid:
:param userid:
:param locked:
repo = get_repo_or_error(repoid)
if HasPermissionAnyApi('hg.admin')(user=apiuser):
pass
elif HasRepoPermissionAnyApi('repository.admin',
'repository.write')(user=apiuser,
repo_name=repo.repo_name):
#make sure normal user does not pass userid, he is not allowed to do that
if not isinstance(userid, Optional):
'Only RhodeCode admin can specify `userid` params'
'Only RhodeCode admin can specify `userid` param'
else:
return abort(403)
if isinstance(userid, Optional):
userid = apiuser.user_id
user = get_user_or_error(userid)
locked = bool(locked)
try:
if locked:
Repository.lock(repo, user.user_id)
Repository.unlock(repo)
return ('User `%s` set lock state for repo `%s` to `%s`'
% (user.username, repo.repo_name, locked))
except Exception:
log.error(traceback.format_exc())
'Error occurred locking repository `%s`' % repo.repo_name
@HasPermissionAllDecorator('hg.admin')
def show_ip(self, apiuser, userid):
Shows IP address as seen from RhodeCode server, together with all
defined IP addresses for given user
ips = UserIpMap.query().filter(UserIpMap.user == user).all()
return dict(
ip_addr_server=self.ip_addr,
user_ips=ips
def get_user(self, apiuser, userid):
def get_user(self, apiuser, userid=Optional(OAttr('apiuser'))):
""""
Get a user by username
Get a user by username, or userid, if userid is given
data = user.get_api_data()
data['permissions'] = AuthUser(user_id=user.user_id).permissions
return data
def get_users(self, apiuser):
Get all users
result = []
for user in UserModel().get_all():
result.append(user.get_api_data())
return result
def create_user(self, apiuser, username, email, password,
firstname=Optional(None), lastname=Optional(None),
active=Optional(True), admin=Optional(False),
ldap_dn=Optional(None)):
Status change: