audit-logs: implemented full audit logs across application.

- Fixes #5321
- Api+web actions
- To be extended while we develop new features.
This commit is contained in:
Marcin Kuzminski 2017-06-21 12:03:14 +02:00
parent a9ea42785b
commit 25436a7365
16 changed files with 141 additions and 79 deletions

View file

@ -24,6 +24,7 @@ from rhodecode.api import jsonrpc_method, JSONRPCError, JSONRPCForbidden
from rhodecode.api.utils import (
Optional, OAttr, store_update, has_superadmin_permission, get_origin,
get_user_or_error, get_user_group_or_error, get_perm_or_error)
from rhodecode.lib import audit_logger
from rhodecode.lib.auth import HasUserGroupPermissionAnyApi, HasPermissionAnyApi
from rhodecode.lib.exceptions import UserGroupAssignedException
from rhodecode.model.db import Session
@ -217,13 +218,18 @@ def create_user_group(
owner = get_user_or_error(owner)
active = Optional.extract(active)
description = Optional.extract(description)
ug = UserGroupModel().create(
user_group = UserGroupModel().create(
name=group_name, description=description, owner=owner,
active=active)
Session().flush()
creation_data = user_group.get_api_data()
audit_logger.store_api(
'user_group.create', action_data={'data': creation_data},
user=apiuser)
Session().commit()
return {
'msg': 'created new user group `%s`' % group_name,
'user_group': ug.get_api_data()
'user_group': creation_data
}
except Exception:
log.exception("Error occurred during creation of user group")
@ -291,6 +297,7 @@ def update_user_group(request, apiuser, usergroupid, group_name=Optional(''),
if not isinstance(owner, Optional):
owner = get_user_or_error(owner)
old_data = user_group.get_api_data()
updates = {}
store_update(updates, group_name, 'users_group_name')
store_update(updates, description, 'user_group_description')
@ -298,6 +305,9 @@ def update_user_group(request, apiuser, usergroupid, group_name=Optional(''),
store_update(updates, active, 'users_group_active')
try:
UserGroupModel().update(user_group, updates)
audit_logger.store_api(
'user_group.edit', action_data={'old_data': old_data},
user=apiuser)
Session().commit()
return {
'msg': 'updated user group ID:%s %s' % (
@ -359,8 +369,12 @@ def delete_user_group(request, apiuser, usergroupid):
raise JSONRPCError(
'user group `%s` does not exist' % (usergroupid,))
old_data = user_group.get_api_data()
try:
UserGroupModel().delete(user_group)
audit_logger.store_api(
'user_group.delete', action_data={'old_data': old_data},
user=apiuser)
Session().commit()
return {
'msg': 'deleted user group ID:%s %s' % (
@ -438,6 +452,12 @@ def add_user_to_user_group(request, apiuser, usergroupid, userid):
user.username, user_group.users_group_name
)
msg = msg if success else 'User is already in that group'
if success:
user_data = user.get_api_data()
audit_logger.store_api(
'user_group.edit.member.add', action_data={'user': user_data},
user=apiuser)
Session().commit()
return {
@ -501,6 +521,12 @@ def remove_user_from_user_group(request, apiuser, usergroupid, userid):
user.username, user_group.users_group_name
)
msg = msg if success else "User wasn't in group"
if success:
user_data = user.get_api_data()
audit_logger.store_api(
'user_group.edit.member.delete', action_data={'user': user_data},
user=apiuser)
Session().commit()
return {'success': success, 'msg': msg}
except Exception: