Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

support /users/<uuid>/invite/resend admin api #3397

Merged
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
16 changes: 15 additions & 1 deletion src/api/admin.rs
Expand Up @@ -53,7 +53,8 @@ pub fn routes() -> Vec<Route> {
organizations_overview,
delete_organization,
diagnostics,
get_diagnostics_config
get_diagnostics_config,
resend_user_invite,
]
}

Expand Down Expand Up @@ -435,6 +436,19 @@ async fn remove_2fa(uuid: String, _token: AdminToken, mut conn: DbConn) -> Empty
user.save(&mut conn).await
}

#[post("/users/<uuid>/invite/resend")]
async fn resend_user_invite(uuid: String, _token: AdminToken, mut conn: DbConn) -> EmptyResult {
if let Some(user) = User::find_by_uuid(&uuid,&mut conn).await {
if CONFIG.mail_enabled() {
mail::send_invite(&user.email, &user.uuid, None, None, &CONFIG.invitation_org_name(), None).await
} else {
Ok(())
}
nikolaevn marked this conversation as resolved.
Show resolved Hide resolved
} else {
err_code!("User doesn't exist", Status::NotFound.code);
}
}

#[derive(Deserialize, Debug)]
struct UserOrgTypeData {
user_type: NumberOrString,
Expand Down
21 changes: 21 additions & 0 deletions src/static/scripts/admin_users.js
Expand Up @@ -120,6 +120,24 @@ function inviteUser(event) {
);
}

function resendUserInvite (event) {
event.preventDefault();
event.stopPropagation();
const id = event.target.parentNode.dataset.vwUserUuid;
const email = event.target.parentNode.dataset.vwUserEmail;
if (!id) {
nikolaevn marked this conversation as resolved.
Show resolved Hide resolved
alert("Required parameters not found!");
return false;
}
const confirmed = confirm(`Are you sure you want to resend invitation for "${email}"?`);
if (confirmed) {
_post(`${BASE_URL}/admin/users/${id}/invite/resend`,
"Invite sent successfully",
"Error resend invite"
);
}
}

const ORG_TYPES = {
"0": {
"name": "Owner",
Expand Down Expand Up @@ -228,6 +246,9 @@ function initUserTable() {
document.querySelectorAll("button[vw-enable-user]").forEach(btn => {
btn.addEventListener("click", enableUser);
});
document.querySelectorAll("button[vw-resend-user-invite]").forEach(btn => {
btn.addEventListener("click", resendUserInvite);
});

if (jdenticon) {
jdenticon();
Expand Down
3 changes: 3 additions & 0 deletions src/static/templates/admin/users.hbs
Expand Up @@ -72,6 +72,9 @@
{{else}}
<button type="button" class="btn btn-sm btn-link p-0 border-0 float-right" vw-enable-user>Enable User</button><br>
{{/if}}
{{#case _Status 1}}
<button type="button" class="btn btn-sm btn-link p-0 border-0 float-right" vw-resend-user-invite>Resend invite</button><br>
{{/case}}
</span>
</td>
</tr>
Expand Down