Skip to content

Commit

Permalink
Merge pull request #766 from puzzle/bug/765-delete-team-from-user
Browse files Browse the repository at this point in the history
resolve error after delete team from user
  • Loading branch information
kcinay055679 authored May 21, 2024
2 parents 15aa884 + 6b101e3 commit 448b830
Show file tree
Hide file tree
Showing 8 changed files with 95 additions and 26 deletions.
2 changes: 2 additions & 0 deletions frontend/app/components/admin/user/deletion-form.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ export default class AdminUserDeletionFormComponent extends Component {

@action
deleteTeam(team) {
this.onlyTeammemberTeams = this.onlyTeammemberTeams.filter(e=> e != team)
team.destroyRecord();
}

Expand All @@ -40,5 +41,6 @@ export default class AdminUserDeletionFormComponent extends Component {

this.args.user.destroyRecord();
this.toggleDeletionForm();
this.args.afterDelete();
}
}
5 changes: 5 additions & 0 deletions frontend/app/components/admin/user/table-row.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,11 @@ export default class AdminUserTableRowComponent extends Component {
this.isEditing = !this.isEditing;
}

@action
refresh() {
if (this.args.onRemove) this.args.onRemove(this.args.user);
}

@action
unlockUser(user) {
this.fetchService
Expand Down
18 changes: 15 additions & 3 deletions frontend/app/templates/components/admin/user/deletion-form.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,10 @@
<Modal.header>
<h3 class="modal-title">{{t "admin.users.last_teammember_teams.destroy"}}</h3>
</Modal.header>
{{#if this.isDeletionDisabled}}

<Modal.body>
<div class="container-fluid">
{{#if this.isDeletionDisabled}}
<p>{{t "admin.users.last_teammember_teams.message"}}</p>
<table class="table table-striped mt-20">
<thead>
Expand All @@ -29,17 +30,28 @@
{{truncate team.description 20}}
</td>
<td>
<span role="button" {{on "click" (fn this.deleteTeam team)}}>
<span role="button" {{on "click" (fn this.deleteTeam team)}} data-test-id="delete">
<img src="/assets/images/delete.svg" alt="delete" class="icon-button">
</span>
</td>
</tr>
{{/each}}
</tbody>
</table>
{{else}}
<div class="d-flex flex-column" data-test-id="delete-user-text">
<span class="fw-bold">
{{t "admin.users.last_teammember_teams.confirmation"}}
</span>
<span>
{{@user.givenname}}
{{@user.surname}}
</span>
</div>
{{/if}}
</div>
</Modal.body>
{{/if}}

<Modal.footer>
<BsButton @onClick={{action this.deleteUser}} @type="danger" disabled={{this.isDeletionDisabled}}>{{t "delete"}}</BsButton>
<BsButton @onClick={{action this.toggleDeletionForm}} @type="secondary">{{t "close"}}</BsButton>
Expand Down
2 changes: 1 addition & 1 deletion frontend/app/templates/components/admin/user/table-row.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
</span>
{{/if}}
{{#if @user.deletable}}
<Admin::User::DeletionForm @user={{@user}}>
<Admin::User::DeletionForm @user={{@user}} @afterDelete={{fn this.refresh}}>
<img src="/assets/images/delete.svg" alt="delete" class="icon-button">
</Admin::User::DeletionForm>
{{/if}}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,63 @@
import { module, test } from "qunit";
import { setupRenderingTest } from "ember-qunit";
import { render } from "@ember/test-helpers";
import { render, waitFor } from "@ember/test-helpers";
import { hbs } from "ember-cli-htmlbars";
import Service from "@ember/service";
import { setLocale } from "ember-intl/test-support";



const storeStub = Service.extend({
query(modelName, params) {
return [
{ name: "Team1", description: "description1", destroyRecord: () => {}},
{ name: "Team2", description: "description2", destroyRecord: () => {}}
];
}
});

module("Integration | Component | admin/user/deletion-form", function (hooks) {
setupRenderingTest(hooks);


hooks.beforeEach(function () {
this.owner.unregister("service:store");
this.owner.register("service:store", storeStub);
setLocale("en");

});

test("it renders with block", async function (assert) {
await render(hbs`
<Admin::User::DeletionForm>
Delete
</Admin::User::DeletionForm>
`);

assert.equal(this.element.textContent.trim(), "Delete");
});

test("Refreshes teams after delete", async function (assert) {
this.set("user", {
id: 12,
givenname: "Bob",
surname: "Muster",
username: "bob"
});

await render(hbs`
<Admin::User::DeletionForm @user={{this.user}}>
Delete
</Admin::User::DeletionForm>`);

this.element.querySelector("span[role='button']").click()

await waitFor('[data-test-id="delete"]', { timeout: 2000 })


this.element.querySelectorAll('[data-test-id="delete"]').forEach((e) => e.click());
await waitFor('[data-test-id="delete-user-text"]', { timeout: 2000 })

const teamsLeft = this.element.querySelectorAll("[data-test-id='delete']").length
assert.equal(teamsLeft, 0);
});
});
41 changes: 21 additions & 20 deletions frontend/translations/de.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
# See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.

de:
fallback: 'ACHTUNG! Dass ist die Cryptopus Fallback Umgebung. Schreiben sie keine neuen Daten da diese nicht erhalten bleiben!'
confirmation: Sind Sie sicher?
fallback: 'ACHTUNG! Dass ist die Cryptopus Fallback Umgebung. Schreibe keine neuen Daten da diese nicht erhalten bleiben!'
confirmation: Bist du sicher?
show: Anzeigen
edit: Editieren
update: Updaten
Expand Down Expand Up @@ -78,8 +78,8 @@ de:
edit:
title: Zugangsdaten editieren
random_password: Zufälliges Passwort
team_placeholder: Wählen Sie ein Team aus
folder_placeholder: Wählen Sie ein Ordner aus
team_placeholder: Wähle ein Team aus
folder_placeholder: Wähle ein Ordner aus
password_strength: Passwort Stärke
password_strengths:
none: Es ist kein Passwort gesetzt
Expand Down Expand Up @@ -149,26 +149,26 @@ de:
settings:
index:
whitelisted_countries: Länder Whitelist
whitelisted_countries_prompt: Wählen Sie einige Länder...
whitelisted_countries_prompt: Wähle einige Länder...
whitelisted_ips: IP Whitelist
whitelist_ip_prompt: Geben Sie einige IP Adressen an...
whitelist_ip_prompt: Gib einige IP Adressen an...
specify_single_ip: Einzelne IP-Adressen können wie folgt eingegeben werden
range:
specify_range_of_ips: Um eine Spannweite zu definieren kann eine IP-Adresse mit der Subnetzmaske eingegeben werden
range_between: Dies entspricht der Spannweite zwischen
and: und
ipv6_allowed: IPv6 ist erlaubt und kann wie folgt eingegeben werden
geo_ip_disabled: Source IP Filter ist deaktiviert. Bitte installieren Sie GeoIP DB
geo_ip_disabled: Source IP Filter ist deaktiviert. Bitte installiere die GeoIP DB
recryptrequests:
uncrypterror:
ldap_password_changed: Ihr LDAP Passwort hat sich seit Ihrem letzten Login geändert.
ldap_enter_old_password: Bitte geben Sie Ihr altes LDAP Passwort ein um Ihren privaten Schlüssel zu entschlüsseln.
ldap_old_password: Ihr altes LDAP Passwort
ldap_new_password: Ihr neues LDAP Passwort
ldap_password_changed: Dein LDAP Passwort hat sich seit deinem letzten Login geändert.
ldap_enter_old_password: Bitte gib dein altes LDAP Passwort ein um deinen privaten Schlüssel zu entschlüsseln.
ldap_old_password: Dein altes LDAP Passwort
ldap_new_password: Dein neues LDAP Passwort
forgot_password_recrypt: |
Falls Sie Ihr Passwort vergessen haben, werden nur Teams entschlüsselt welche nicht privat sind.
Falls du dein Passwort vergessen haben, werden nur Teams entschlüsselt welche nicht privat sind.
Sollten dadurch private Teams entstehen, auf die niemand Zugriff hat, werden diese gelöscht.
Nachdem das Formular abgesendet wurde, müssen Sie warten, bis ein Admin die Anfrage abgearbeitet hat.
Nachdem das Formular abgesendet wurde, musst du warten, bis ein Admin die Anfrage abgearbeitet hat.
send: Anfrage senden
users:
index_menu:
Expand All @@ -190,6 +190,7 @@ de:
last_teammember_teams:
message: Folgende Teams in denen der zu löschende User der letzte Member ist müssen gelöscht werden.
destroy: Benutzer löschen
confirmation: Bist du sicher, dass du den Benutzer löschen möchten?
new:
title: Neuer Benutzer

Expand All @@ -214,9 +215,9 @@ de:
title: Anhang zu den Zugangsdaten hinzufügen
upload: Hochladen
upload_file: Datei hochladen
choose_file: Wählen Sie eine Datei
choose_file: Wähle eine Datei
selected_file: Ausgewählte Datei
reupload: Wählen Sie eine andere Datei
reupload: Wähle eine andere Datei

session:
destroy:
Expand Down Expand Up @@ -262,7 +263,7 @@ de:
api_users:
api_users: Api Benutzer
no_api_users: keine Api Benutzer
enter_description: Geben Sie eine Beschreibung ein..
enter_description: Gib eine Beschreibung ein..
valid_until: Gültig bis
valid_for: Gültig für
last_login: Letztes Login
Expand Down Expand Up @@ -340,7 +341,7 @@ de:
<< : *encryptables_translations

application:
wait: Bitte warten Sie, bis Ihre Team Passwörter neu verschlüsselt wurden.
wait: Bitte warte, bis deine Team Passwörter neu verschlüsselt wurden.
folders:
created: Ein neuer Ordner ist erfolgreich erstellt worden.
updated: Der Ordner wurde erfolgreich aktualisiert.
Expand All @@ -361,7 +362,7 @@ de:
transfer_failed: Übermittlung der Datei mit dem Empfänger fehlgeschlagen
session:
auth_failed: Ungültiger Benutzername / Passwort.
weak_password: Um die Sicherheit zu verbessern, sollten Sie ein komplexeres Passwort wählen
weak_password: Um die Sicherheit zu verbessern, solltest du ein komplexeres Passwort wählen
wrong_root: Anmeldung als root nur von privater IP aus möglich
teams:
created: Erfolgreich ein neues Team erstellt.
Expand All @@ -382,8 +383,8 @@ de:
errors:
models:
user:
new_password_invalid: Ihr neues Passwort war falsch
old_password_invalid: Ihr altes Passwort war falsch
new_password_invalid: Dein neues Passwort war falsch
old_password_invalid: Dein altes Passwort war falsch

tooltips:
all_teams: Alle Teams
Expand Down
1 change: 1 addition & 0 deletions frontend/translations/en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,7 @@ en:
last_teammember_teams:
message: Before you can delete this user you have to delete the following teams, because the user is the last member.
destroy: Destroy User
confirmation: Are you sure you want to delete this user?
new:
title: New User

Expand Down
3 changes: 3 additions & 0 deletions public/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
## Version 5.3.1
- Fix a bug that prevents users from deleting other users.

## Version 5.3
- Upgrade to Ember 4.12
- Introduce encryptable files for folders
Expand Down

0 comments on commit 448b830

Please sign in to comment.