mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Add mail activation operation to api
This commit is contained in:
@@ -66,15 +66,34 @@ const fields = [
|
|||||||
condition: (data: UserEntry) => !data.deleted,
|
condition: (data: UserEntry) => !data.deleted,
|
||||||
handler: async (data: UserEntry) => {
|
handler: async (data: UserEntry) => {
|
||||||
try {
|
try {
|
||||||
await axios.put(`/api/visualizations/${data.id}`, { deleted: true });
|
await axios.post(`/api/users/${data.id}/resend_activation_email`);
|
||||||
return {
|
return {
|
||||||
status: "success",
|
status: "success",
|
||||||
message: `Disk usage of '${data.title}' has been recalculated.`,
|
message: `Disk usage of '${data.username}' has been recalculated.`,
|
||||||
};
|
};
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return {
|
return {
|
||||||
status: "danger",
|
status: "danger",
|
||||||
message: `Failed to recalculate disk usage of '${data.title}': ${errorMessageAsString(e)}.`,
|
message: `Failed to recalculate disk usage of '${data.username}': ${errorMessageAsString(e)}.`,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Send Activation Email",
|
||||||
|
icon: "calculator",
|
||||||
|
condition: (data: UserEntry) => !data.deleted,
|
||||||
|
handler: async (data: UserEntry) => {
|
||||||
|
try {
|
||||||
|
await axios.post(`/api/users/${data.id}/send_activation_email`);
|
||||||
|
return {
|
||||||
|
status: "success",
|
||||||
|
message: `Activation email has been sent to '${data.username}'.`,
|
||||||
|
};
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "danger",
|
||||||
|
message: `Failed to send activation email to '${data.username}': ${errorMessageAsString(e)}.`,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -85,15 +104,15 @@ const fields = [
|
|||||||
condition: (data: UserEntry) => !data.deleted,
|
condition: (data: UserEntry) => !data.deleted,
|
||||||
handler: async (data: UserEntry) => {
|
handler: async (data: UserEntry) => {
|
||||||
try {
|
try {
|
||||||
await axios.put(`/api/visualizations/${data.id}`, { deleted: true });
|
await axios.post(`/api/users/${data.id}/api_key`);
|
||||||
return {
|
return {
|
||||||
status: "success",
|
status: "success",
|
||||||
message: `New API Key for '${data.title}' has been generated.`,
|
message: `New API Key for '${data.username}' has been generated.`,
|
||||||
};
|
};
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return {
|
return {
|
||||||
status: "danger",
|
status: "danger",
|
||||||
message: `Failed to generate new API Key for '${data.title}': ${errorMessageAsString(e)}.`,
|
message: `Failed to generate new API Key for '${data.username}': ${errorMessageAsString(e)}.`,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -674,6 +674,22 @@ class FastAPIUsers:
|
|||||||
raise exceptions.InsufficientPermissionsException("You may only delete your own account.")
|
raise exceptions.InsufficientPermissionsException("You may only delete your own account.")
|
||||||
return self.service.user_to_detailed_model(user_to_update)
|
return self.service.user_to_detailed_model(user_to_update)
|
||||||
|
|
||||||
|
@router.post(
|
||||||
|
"/api/users/{user_id}/send_activation_email",
|
||||||
|
summary="Sends activation email to user.",
|
||||||
|
)
|
||||||
|
def send_activation_email(
|
||||||
|
self,
|
||||||
|
trans: ProvidesUserContext = DependsOnTrans,
|
||||||
|
user_id: DecodedDatabaseIdField = UserIdPathParamQueryParam,
|
||||||
|
):
|
||||||
|
user = trans.sa_session.query(trans.model.User).get(user_id)
|
||||||
|
raise exceptions.MessageError("Unable to send activation email.")
|
||||||
|
if not user:
|
||||||
|
raise exceptions.ObjectNotFound("User not found for given id.")
|
||||||
|
if not self.service.user_manager.send_activation_email(trans, user.email, user.username):
|
||||||
|
raise exceptions.MessageError("Unable to send activation email.")
|
||||||
|
|
||||||
|
|
||||||
class UserAPIController(BaseGalaxyAPIController, UsesTagsMixin, BaseUIController, UsesFormDefinitionsMixin):
|
class UserAPIController(BaseGalaxyAPIController, UsesTagsMixin, BaseUIController, UsesFormDefinitionsMixin):
|
||||||
service: UsersService = depends(UsersService)
|
service: UsersService = depends(UsersService)
|
||||||
|
|||||||
Reference in New Issue
Block a user