send out a recovery email after a new user is created.
This commit is contained in:
parent
72f54df155
commit
685ddeff00
2 changed files with 36 additions and 8 deletions
|
@ -1,8 +1,17 @@
|
|||
import ory_kratos_client
|
||||
from ory_kratos_client.model.submit_self_service_recovery_flow_body \
|
||||
import SubmitSelfServiceRecoveryFlowBody
|
||||
from ory_kratos_client.api import v0alpha2_api as kratos_api
|
||||
from config import KRATOS_ADMIN_URL
|
||||
|
||||
from database import db
|
||||
from areas.apps.models import App, AppRole
|
||||
from areas.roles.role_service import RoleService
|
||||
from helpers import KratosApi
|
||||
|
||||
tmp = ory_kratos_client.Configuration(host=KRATOS_ADMIN_URL, discard_unknown_keys=True)
|
||||
KRATOS_ADMIN = kratos_api.V0alpha2Api(ory_kratos_client.ApiClient(tmp))
|
||||
|
||||
class UserService:
|
||||
@staticmethod
|
||||
def get_users():
|
||||
|
@ -22,7 +31,10 @@ class UserService:
|
|||
def post_user(data):
|
||||
kratos_data = {
|
||||
"schema_id": "default",
|
||||
"traits": {"email": data["email"], "name": data["name"]},
|
||||
"traits": {
|
||||
"name": data["name"],
|
||||
"email": data["email"],
|
||||
},
|
||||
}
|
||||
res = KratosApi.post("/admin/identities", kratos_data).json()
|
||||
|
||||
|
@ -39,8 +51,31 @@ class UserService:
|
|||
db.session.add(app_role)
|
||||
db.session.commit()
|
||||
|
||||
UserService.__start_user_recovery_flow(data["email"])
|
||||
|
||||
return UserService.get_user(res["id"])
|
||||
|
||||
|
||||
@staticmethod
|
||||
def __start_user_recovery_flow(email):
|
||||
"""
|
||||
Start a Kratos recovery flow for the user's email address.
|
||||
|
||||
This sends out an email to the user that explains to them how they can
|
||||
set their password.
|
||||
|
||||
:param email: Email to send recovery link to
|
||||
:type email: str
|
||||
"""
|
||||
api_response = KRATOS_ADMIN.initialize_self_service_recovery_flow_without_browser()
|
||||
flow = api_response['id']
|
||||
# Submit the recovery flow to send an email to the new user.
|
||||
submit_self_service_recovery_flow_body = \
|
||||
SubmitSelfServiceRecoveryFlowBody(method="link", email=email)
|
||||
api_response = KRATOS_ADMIN.submit_self_service_recovery_flow(flow,
|
||||
submit_self_service_recovery_flow_body=
|
||||
submit_self_service_recovery_flow_body)
|
||||
|
||||
@staticmethod
|
||||
def put_user(id, user_editing_id, data):
|
||||
kratos_data = {
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
|
||||
|
||||
/* base.js
|
||||
This is the base JS file to render the user interfaces of kratos and provide
|
||||
the end user with flows for login, recovery etc.
|
||||
|
@ -433,8 +431,3 @@ $.urlParam = function(name) {
|
|||
}
|
||||
return decodeURI(results[1]) || 0;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue