mirror of
https://github.com/dkmstr/openuds.git
synced 2025-03-13 08:58:35 +03:00
added reset related data to user, to clean up mfa data for example
This commit is contained in:
parent
165bd89829
commit
9be108dbd5
@ -78,7 +78,7 @@ def getPoolsForGroups(groups):
|
||||
|
||||
class Users(DetailHandler):
|
||||
|
||||
custom_methods = ['servicesPools', 'userServices']
|
||||
custom_methods = ['servicesPools', 'userServices', 'cleanRelated']
|
||||
|
||||
def getItems(self, parent: Authenticator, item: typing.Optional[str]):
|
||||
# processes item to change uuid key for id
|
||||
@ -282,7 +282,7 @@ class Users(DetailHandler):
|
||||
|
||||
return 'deleted'
|
||||
|
||||
def servicesPools(self, parent: Authenticator, item):
|
||||
def servicesPools(self, parent: Authenticator, item: str) -> typing.List[typing.Dict]:
|
||||
uuid = processUuid(item)
|
||||
user = parent.users.get(uuid=processUuid(uuid))
|
||||
res = []
|
||||
@ -304,7 +304,7 @@ class Users(DetailHandler):
|
||||
|
||||
return res
|
||||
|
||||
def userServices(self, parent: Authenticator, item):
|
||||
def userServices(self, parent: Authenticator, item: str) -> typing.List[typing.Dict]:
|
||||
uuid = processUuid(item)
|
||||
user = parent.users.get(uuid=processUuid(uuid))
|
||||
res = []
|
||||
@ -316,6 +316,12 @@ class Users(DetailHandler):
|
||||
res.append(v)
|
||||
|
||||
return res
|
||||
|
||||
def cleanRelated(self, parent: Authenticator, item: str) -> typing.Dict:
|
||||
uuid = processUuid(item)
|
||||
user = parent.users.get(uuid=processUuid(uuid))
|
||||
user.cleanRelated()
|
||||
return {'status': 'ok'}
|
||||
|
||||
|
||||
class Groups(DetailHandler):
|
||||
|
@ -38,13 +38,14 @@ import logging
|
||||
import typing
|
||||
|
||||
from django.utils.translation import ugettext_noop as _
|
||||
from uds import models
|
||||
from uds.models.util import getSqlDatetime
|
||||
from uds.core import Module
|
||||
from uds.core.auths import exceptions
|
||||
|
||||
if typing.TYPE_CHECKING:
|
||||
from uds.core.environment import Environment
|
||||
from uds.core.util.request import ExtendedHttpRequest
|
||||
from uds.models import User
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@ -194,7 +195,7 @@ class MFA(Module):
|
||||
Internal method to put the data into storage
|
||||
"""
|
||||
storageKey = request.ip + userId
|
||||
self.storage.putPickle(storageKey, (models.getSqlDatetime(), code))
|
||||
self.storage.putPickle(storageKey, (getSqlDatetime(), code))
|
||||
|
||||
def process(
|
||||
self,
|
||||
@ -231,7 +232,7 @@ class MFA(Module):
|
||||
try:
|
||||
if data and validity:
|
||||
# if we have a stored code, check if it's still valid
|
||||
if data[0] + datetime.timedelta(seconds=validity) > models.getSqlDatetime():
|
||||
if data[0] + datetime.timedelta(seconds=validity) > getSqlDatetime():
|
||||
# if it's still valid, just return without sending a new one
|
||||
return MFA.RESULT.OK
|
||||
except Exception:
|
||||
@ -281,7 +282,7 @@ class MFA(Module):
|
||||
if (
|
||||
validity > 0
|
||||
and data[0] + datetime.timedelta(seconds=validity)
|
||||
< models.getSqlDatetime()
|
||||
< getSqlDatetime()
|
||||
):
|
||||
# if it is no more valid, raise an error
|
||||
# Remove stored code and raise error
|
||||
@ -310,7 +311,7 @@ class MFA(Module):
|
||||
pass
|
||||
|
||||
@staticmethod
|
||||
def getUserId(user: models.User) -> str:
|
||||
def getUserId(user: 'User') -> str:
|
||||
mfa = user.manager.mfa
|
||||
if not mfa:
|
||||
raise exceptions.MFAError('MFA is not enabled')
|
||||
|
@ -36,6 +36,7 @@ import typing
|
||||
from django.db import models
|
||||
from django.db.models import signals, Q, Count
|
||||
|
||||
from uds.core import mfas
|
||||
from uds.core.util import log
|
||||
from uds.core.util import storage
|
||||
|
||||
@ -230,6 +231,16 @@ class User(UUIDModel):
|
||||
return 'User {} (id:{}) from auth {}'.format(
|
||||
self.name, self.id, self.manager.name
|
||||
)
|
||||
|
||||
def cleanRelated(self) -> None:
|
||||
"""
|
||||
Cleans up all related external data, such as mfa data, etc
|
||||
"""
|
||||
# If has mfa, remove related data
|
||||
# If has mfa, remove related data
|
||||
if self.manager.mfa:
|
||||
self.manager.mfa.getInstance().resetData(mfas.MFA.getUserId(self))
|
||||
|
||||
|
||||
@staticmethod
|
||||
def beforeDelete(sender, **kwargs):
|
||||
@ -248,8 +259,7 @@ class User(UUIDModel):
|
||||
toDelete.getManager().removeUser(toDelete.name)
|
||||
|
||||
# If has mfa, remove related data
|
||||
if toDelete.manager.mfa:
|
||||
toDelete.manager.mfa.getInstance().resetData(toDelete)
|
||||
toDelete.cleanRelated()
|
||||
|
||||
# Remove related stored values
|
||||
with storage.StorageAccess('manager' + str(toDelete.manager.uuid)) as store:
|
||||
|
File diff suppressed because one or more lines are too long
@ -229,11 +229,6 @@ gettext("Report finished");
|
||||
gettext("dismiss");
|
||||
gettext("Generate report");
|
||||
gettext("Delete tunnel token - USE WITH EXTREME CAUTION!!!");
|
||||
gettext("Information");
|
||||
gettext("In Maintenance");
|
||||
gettext("Active");
|
||||
gettext("Delete user");
|
||||
gettext("Delete group");
|
||||
gettext("Pool");
|
||||
gettext("State");
|
||||
gettext("User Services");
|
||||
@ -264,6 +259,17 @@ gettext("Services Pool");
|
||||
gettext("Groups");
|
||||
gettext("Services Pools");
|
||||
gettext("Assigned services");
|
||||
gettext("Information");
|
||||
gettext("Information");
|
||||
gettext("Clean related (mfa,...)");
|
||||
gettext("In Maintenance");
|
||||
gettext("Active");
|
||||
gettext("Delete user");
|
||||
gettext("Delete group");
|
||||
gettext("Clean data");
|
||||
gettext("Clean related data (mfa, ...)?");
|
||||
gettext("Related data resete");
|
||||
gettext("dismiss");
|
||||
gettext("New Authenticator");
|
||||
gettext("Edit Authenticator");
|
||||
gettext("Delete Authenticator");
|
||||
@ -455,10 +461,6 @@ gettext("For optimal results, use "squared" images.");
|
||||
gettext("The image will be resized on upload to");
|
||||
gettext("Cancel");
|
||||
gettext("Ok");
|
||||
gettext("Summary");
|
||||
gettext("Users");
|
||||
gettext("Groups");
|
||||
gettext("Logs");
|
||||
gettext("Information for");
|
||||
gettext("Services Pools");
|
||||
gettext("Users");
|
||||
@ -497,3 +499,7 @@ gettext("Groups");
|
||||
gettext("Services Pools");
|
||||
gettext("Assigned Services");
|
||||
gettext("Ok");
|
||||
gettext("Summary");
|
||||
gettext("Users");
|
||||
gettext("Groups");
|
||||
gettext("Logs");
|
||||
|
@ -99,7 +99,7 @@
|
||||
</svg>
|
||||
</div>
|
||||
</uds-root>
|
||||
<script src="/uds/res/admin/runtime.js?stamp=1665662924" defer></script><script src="/uds/res/admin/polyfills-es5.js?stamp=1665662924" nomodule defer></script><script src="/uds/res/admin/polyfills.js?stamp=1665662924" defer></script><script src="/uds/res/admin/main.js?stamp=1665662924" defer></script>
|
||||
<script src="/uds/res/admin/runtime.js?stamp=1677177369" defer></script><script src="/uds/res/admin/polyfills-es5.js?stamp=1677177369" nomodule defer></script><script src="/uds/res/admin/polyfills.js?stamp=1677177369" defer></script><script src="/uds/res/admin/main.js?stamp=1677177369" defer></script>
|
||||
|
||||
|
||||
</body></html>
|
Loading…
x
Reference in New Issue
Block a user