Reconcile recovery by support reference and bound provider lookup
Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a092fe-13b1-7f12-ac74-7d258af4d79c
This commit is contained in:
parent
cb51584f58
commit
d15f4dde0b
4 changed files with 43 additions and 3 deletions
|
|
@ -56,6 +56,7 @@ class ProviderStore:
|
|||
if db.engine.dialect.name != 'postgresql':
|
||||
yield;return
|
||||
with db.engine.connect() as connection:
|
||||
connection.execute(text("SET lock_timeout = '5s'"))
|
||||
connection.execute(text('SELECT pg_advisory_lock(4912040036)'))
|
||||
try:yield
|
||||
finally:connection.execute(text('SELECT pg_advisory_unlock(4912040036)'))
|
||||
|
|
@ -63,13 +64,17 @@ class ProviderStore:
|
|||
def serials(self,user):
|
||||
from privacyidea.lib.token import get_tokens
|
||||
from privacyidea.lib.user import User
|
||||
values=get_tokens(user=User(user,self.realm))
|
||||
identity=User(user,self.realm)
|
||||
if not identity.resolver or identity.uid in (None,''):raise RecoveryError('account_not_found')
|
||||
values=get_tokens(user=identity)
|
||||
if len(values)>20:raise RecoveryError('too_many_factors')
|
||||
return [token.token.serial for token in values]
|
||||
def _token(self,user,serial):
|
||||
from privacyidea.lib.token import get_tokens
|
||||
from privacyidea.lib.user import User
|
||||
values=get_tokens(user=User(user,self.realm),serial=serial)
|
||||
identity=User(user,self.realm)
|
||||
if not identity.resolver or identity.uid in (None,''):return None
|
||||
values=get_tokens(user=identity,serial=serial)
|
||||
if len(values)!=1:return None
|
||||
return values[0].token
|
||||
def snapshot(self,user,serial):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue