From 5f57938b21fa056345c33336930d0fe1fa346db1 Mon Sep 17 00:00:00 2001 From: MuStAgEDelta Date: Wed, 6 Apr 2022 16:17:38 +0200 Subject: [PATCH 01/82] add translation for Log --- frontend/translations/ch_be.yml | 1 + frontend/translations/de.yml | 1 + frontend/translations/en.yml | 1 + frontend/translations/fr.yml | 1 + 4 files changed, 4 insertions(+) diff --git a/frontend/translations/ch_be.yml b/frontend/translations/ch_be.yml index 5dac51e3b..8a3b31b12 100644 --- a/frontend/translations/ch_be.yml +++ b/frontend/translations/ch_be.yml @@ -29,6 +29,7 @@ ch_be: settings: Istellige recrypt_requests: Recrypt Afragä users: Benutzer + log: Protokou profile_title: Profiu change_password: Passwort wächslä last_login_date_and_from: "Ds letschtä Login isch am %{last_login_at} gsi vo %{last_login_from}" diff --git a/frontend/translations/de.yml b/frontend/translations/de.yml index 6aa451cdf..5039ce8ac 100644 --- a/frontend/translations/de.yml +++ b/frontend/translations/de.yml @@ -32,6 +32,7 @@ de: recrypt_requests: Recrypt Anfragen users: Benutzer user: Benutzer + log: Protokoll profile_title: Profil change_password: Passwort wechseln last_login_date_and_from: "Das letzte Login war am %{last_login_at} von %{last_login_from}" diff --git a/frontend/translations/en.yml b/frontend/translations/en.yml index 087aa4715..7e8fd0a2b 100644 --- a/frontend/translations/en.yml +++ b/frontend/translations/en.yml @@ -32,6 +32,7 @@ en: recrypt_requests: Recrypt requests users: Users user: User + log: Log profile_title: Profile change_password: Change password last_login_date_and_from: "The last login was on %{last_login_at} from %{last_login_from}" diff --git a/frontend/translations/fr.yml b/frontend/translations/fr.yml index e02ef38a3..551ca805c 100644 --- a/frontend/translations/fr.yml +++ b/frontend/translations/fr.yml @@ -32,6 +32,7 @@ fr: recrypt_requests: Demandes de re crypt users: Utilisateur user: Utilisateur + Log: Journal profile_title: Profilé change_password: Changer le mot de passe last_login_date_and_from: "La dernière connexion était le %{last_login_at} de %{last_login_from}" From 992980a16e0ce30da2ed4c99fb5004a0bb1593e8 Mon Sep 17 00:00:00 2001 From: MuStAgEDelta Date: Wed, 6 Apr 2022 16:25:05 +0200 Subject: [PATCH 02/82] add translation --- frontend/translations/fr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/translations/fr.yml b/frontend/translations/fr.yml index 551ca805c..133d56b8f 100644 --- a/frontend/translations/fr.yml +++ b/frontend/translations/fr.yml @@ -32,7 +32,7 @@ fr: recrypt_requests: Demandes de re crypt users: Utilisateur user: Utilisateur - Log: Journal + log: Journal profile_title: Profilé change_password: Changer le mot de passe last_login_date_and_from: "La dernière connexion était le %{last_login_at} de %{last_login_from}" From 208e9af550334991a4e4a39b005b440df2483d16 Mon Sep 17 00:00:00 2001 From: Julien Gaumez Date: Wed, 6 Apr 2022 17:07:29 +0200 Subject: [PATCH 03/82] Started frontend implementation of Log butten/page not working atm. --- frontend/app/routes/log.js | 23 ++++++++++++ frontend/app/templates/components/nav-bar.hbs | 4 +++ frontend/app/templates/log.hbs | 36 +++++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 frontend/app/routes/log.js create mode 100644 frontend/app/templates/log.hbs diff --git a/frontend/app/routes/log.js b/frontend/app/routes/log.js new file mode 100644 index 000000000..ef482fe57 --- /dev/null +++ b/frontend/app/routes/log.js @@ -0,0 +1,23 @@ +import BaseRoute from "./base"; +import ENV from "../config/environment"; +import RSVP from "rsvp"; +import { inject as service } from "@ember/service"; + +export default class LogRoute extends BaseRoute { + @service navService; + + model() { + return RSVP.hash({ + info: { + lastLoginAt: ENV.currentUserLastLoginAt, + lastLoginFrom: ENV.currentUserLastLoginFrom, + currentUserLabel: ENV.currentUserLabel + }, + apiUsers: this.store.findAll("user-api") + }); + } + + afterModel() { + this.navService.clear(); + } +} diff --git a/frontend/app/templates/components/nav-bar.hbs b/frontend/app/templates/components/nav-bar.hbs index 9dab20544..5dae570d4 100644 --- a/frontend/app/templates/components/nav-bar.hbs +++ b/frontend/app/templates/components/nav-bar.hbs @@ -95,6 +95,10 @@ {{ t "profile_title" }} + + + {{ t "log" }} + {{ t "logout" }} diff --git a/frontend/app/templates/log.hbs b/frontend/app/templates/log.hbs new file mode 100644 index 000000000..81e738bbe --- /dev/null +++ b/frontend/app/templates/log.hbs @@ -0,0 +1,36 @@ +
+ +
+
+
+

{{t "profile.index.title"}}

+
+
+ +
+
+ + + + + + + + + + + + + + + +
{{t "profile.info.last_login_at"}} {{t "profile.info.last_login_from"}}
{{moment-format @model.info.lastLoginAt "DD.MM.YYYY hh:mm"}}{{@model.info.lastLoginFrom}}
+
+ +
+ +
+
+
+
+
From 903cecdbb8a7beaf06a208f99973997791d3aa9f Mon Sep 17 00:00:00 2001 From: Julien Gaumez Date: Thu, 7 Apr 2022 09:37:40 +0200 Subject: [PATCH 04/82] Continued frontend implementation for personal log. Refresh on /log doesnt work and paper trail feature aren't included yet. --- frontend/app/router.js | 1 + frontend/app/templates/components/nav-bar.hbs | 2 +- frontend/app/templates/log.hbs | 44 +++++++------------ frontend/translations/ch_be.yml | 8 +++- frontend/translations/de.yml | 8 +++- frontend/translations/en.yml | 8 +++- frontend/translations/fr.yml | 8 +++- 7 files changed, 47 insertions(+), 32 deletions(-) diff --git a/frontend/app/router.js b/frontend/app/router.js index f75906592..b3b526f16 100644 --- a/frontend/app/router.js +++ b/frontend/app/router.js @@ -35,6 +35,7 @@ Router.map(function () { }); this.route("profile"); + this.route("log"); this.route("dashboard"); this.route("admin", function () { diff --git a/frontend/app/templates/components/nav-bar.hbs b/frontend/app/templates/components/nav-bar.hbs index 5dae570d4..2604756d5 100644 --- a/frontend/app/templates/components/nav-bar.hbs +++ b/frontend/app/templates/components/nav-bar.hbs @@ -97,7 +97,7 @@ - {{ t "log" }} + {{ t "log_title" }} diff --git a/frontend/app/templates/log.hbs b/frontend/app/templates/log.hbs index 81e738bbe..7353ad91d 100644 --- a/frontend/app/templates/log.hbs +++ b/frontend/app/templates/log.hbs @@ -3,34 +3,24 @@
-

{{t "profile.index.title"}}

-
-
- +

{{t "log.info"}}

- - - - - - - - - - - - - - - -
{{t "profile.info.last_login_at"}} {{t "profile.info.last_login_from"}}
{{moment-format @model.info.lastLoginAt "DD.MM.YYYY hh:mm"}}{{@model.info.lastLoginFrom}}
-
- -
- -
-
-
+ + + + + + + + + + + + + + + +
{{t "log.action"}} {{t "log.date"}} {{t "log.where"}}
these are not implemented yetthis neither {{moment-format @model.info.lastLoginAt "DD.MM.YYYY hh:mm"}}nope just example {{@model.info.lastLoginFrom}}
diff --git a/frontend/translations/ch_be.yml b/frontend/translations/ch_be.yml index 8a3b31b12..5c83da7ee 100644 --- a/frontend/translations/ch_be.yml +++ b/frontend/translations/ch_be.yml @@ -29,7 +29,7 @@ ch_be: settings: Istellige recrypt_requests: Recrypt Afragä users: Benutzer - log: Protokou + log_title: Protokou profile_title: Profiu change_password: Passwort wächslä last_login_date_and_from: "Ds letschtä Login isch am %{last_login_at} gsi vo %{last_login_from}" @@ -349,6 +349,12 @@ ch_be: five_mins: Füf minutä twelve_hours: Zwöuf Stung infinite: Eewigs + + log: + info: Persöhnlechs aktivitäts Protokou + action: Aktion + date: Datum + where: Änderig flashes: api: diff --git a/frontend/translations/de.yml b/frontend/translations/de.yml index 5039ce8ac..12a9b998f 100644 --- a/frontend/translations/de.yml +++ b/frontend/translations/de.yml @@ -32,7 +32,7 @@ de: recrypt_requests: Recrypt Anfragen users: Benutzer user: Benutzer - log: Protokoll + log_title: Protokoll profile_title: Profil change_password: Passwort wechseln last_login_date_and_from: "Das letzte Login war am %{last_login_at} von %{last_login_from}" @@ -323,6 +323,12 @@ de: title: Entferne Api-User content: "Lösche Api-User %{username}?" + log: + info: Persöhnliches Aktivitätsprotokoll + action: Aktion + date: Datum + where: Änderung + flashes: api: admin: diff --git a/frontend/translations/en.yml b/frontend/translations/en.yml index 7e8fd0a2b..b4aa8a695 100644 --- a/frontend/translations/en.yml +++ b/frontend/translations/en.yml @@ -32,7 +32,7 @@ en: recrypt_requests: Recrypt requests users: Users user: User - log: Log + log_title: Log profile_title: Profile change_password: Change password last_login_date_and_from: "The last login was on %{last_login_at} from %{last_login_from}" @@ -324,6 +324,12 @@ en: delete: title: Remove Api-User content: "Delete Api-User %{username}?" + + log: + info: Personal activity log + action: Action + date: Date + where: Change flashes: api: diff --git a/frontend/translations/fr.yml b/frontend/translations/fr.yml index 133d56b8f..62803d582 100644 --- a/frontend/translations/fr.yml +++ b/frontend/translations/fr.yml @@ -32,7 +32,7 @@ fr: recrypt_requests: Demandes de re crypt users: Utilisateur user: Utilisateur - log: Journal + log_title: Journal profile_title: Profilé change_password: Changer le mot de passe last_login_date_and_from: "La dernière connexion était le %{last_login_at} de %{last_login_from}" @@ -323,6 +323,12 @@ fr: delete: title: Supprimer Api-User content: "Est-ce que vous voulez supprimer l'utilisateur d'Api %{username}?" + + log: + info: Journal d'activité personnel + action: Action + date: Date + where: Changement flashes: api: From fc1cb07c7adf588073c8dc675ec7cd88e08ab986 Mon Sep 17 00:00:00 2001 From: Julien Gaumez Date: Thu, 7 Apr 2022 14:40:26 +0200 Subject: [PATCH 05/82] removed nav side bar from log page and fixed prettier/prettier error --- frontend/app/routes/log.js | 46 ++++++++++++++-------------- frontend/app/services/nav-service.js | 3 +- 2 files changed, 25 insertions(+), 24 deletions(-) diff --git a/frontend/app/routes/log.js b/frontend/app/routes/log.js index ef482fe57..3e089910b 100644 --- a/frontend/app/routes/log.js +++ b/frontend/app/routes/log.js @@ -1,23 +1,23 @@ -import BaseRoute from "./base"; -import ENV from "../config/environment"; -import RSVP from "rsvp"; -import { inject as service } from "@ember/service"; - -export default class LogRoute extends BaseRoute { - @service navService; - - model() { - return RSVP.hash({ - info: { - lastLoginAt: ENV.currentUserLastLoginAt, - lastLoginFrom: ENV.currentUserLastLoginFrom, - currentUserLabel: ENV.currentUserLabel - }, - apiUsers: this.store.findAll("user-api") - }); - } - - afterModel() { - this.navService.clear(); - } -} +import BaseRoute from "./base"; +import ENV from "../config/environment"; +import RSVP from "rsvp"; +import { inject as service } from "@ember/service"; + +export default class LogRoute extends BaseRoute { + @service navService; + + model() { + return RSVP.hash({ + info: { + lastLoginAt: ENV.currentUserLastLoginAt, + lastLoginFrom: ENV.currentUserLastLoginFrom, + currentUserLabel: ENV.currentUserLabel + }, + apiUsers: this.store.findAll("user-api") + }); + } + + afterModel() { + this.navService.clear(); + } +} diff --git a/frontend/app/services/nav-service.js b/frontend/app/services/nav-service.js index 45638678b..0a7514938 100644 --- a/frontend/app/services/nav-service.js +++ b/frontend/app/services/nav-service.js @@ -24,7 +24,8 @@ export default class NavService extends Service { const sideNavBarDisabledRoutes = [ "admin.settings", "admin.users", - "profile" + "profile", + "log" ]; return !sideNavBarDisabledRoutes.includes(this.router.currentRouteName); } From 4bcdc377243a51793bcc2dac11b508bda4697314 Mon Sep 17 00:00:00 2001 From: Julien Gaumez Date: Thu, 7 Apr 2022 16:18:34 +0200 Subject: [PATCH 06/82] Changed icon for Log in nav bar drop down menu, took the closest one available. --- frontend/app/templates/components/nav-bar.hbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/app/templates/components/nav-bar.hbs b/frontend/app/templates/components/nav-bar.hbs index 2604756d5..6c0eb6a93 100644 --- a/frontend/app/templates/components/nav-bar.hbs +++ b/frontend/app/templates/components/nav-bar.hbs @@ -96,7 +96,7 @@ {{ t "profile_title" }} - + {{ t "log_title" }} From 24dd0767656425d696f8b929d15ccb89f0e76dab Mon Sep 17 00:00:00 2001 From: Julien Gaumez Date: Fri, 8 Apr 2022 13:23:16 +0200 Subject: [PATCH 07/82] Fixed refresh bug when on /log page. (the bug mentioned in earlier commit) --- app/controllers/redirected_routes/url_handler.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/controllers/redirected_routes/url_handler.rb b/app/controllers/redirected_routes/url_handler.rb index e45bb7dec..3c5da4941 100644 --- a/app/controllers/redirected_routes/url_handler.rb +++ b/app/controllers/redirected_routes/url_handler.rb @@ -10,6 +10,7 @@ class RedirectedRoutes::UrlHandler folder_show: /(^\/teams\/\d+\/folders\/\d+)$/, encryptables_show: /(^\/encryptables\/\d+)$/, profile_index: /(^\/profile)$/, + log_index: /(^\/log)$/, admin_users_index: /(^\/admin\/users)$/, admin_settings: /(^\/admin\/settings)$/, dashboard: /(^\/dashboard)$/ From cdeccd349c8acef56ed6eb77e945b4d93c7cfd3d Mon Sep 17 00:00:00 2001 From: renato-oester Date: Fri, 8 Apr 2022 14:14:05 +0200 Subject: [PATCH 08/82] shows encryptables on dashboard loads all encryptables of user --- frontend/app/routes/dashboard.js | 9 ++++++++- .../app/templates/components/dashboard-card.hbs | 4 ++-- frontend/app/templates/dashboard.hbs | 16 +++++++++++++--- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/frontend/app/routes/dashboard.js b/frontend/app/routes/dashboard.js index 3094f7e35..34f3f2099 100644 --- a/frontend/app/routes/dashboard.js +++ b/frontend/app/routes/dashboard.js @@ -13,14 +13,21 @@ export default class DashboardRoute extends BaseRoute { async model(params) { params["limit"] = 20; + const recentCredentials = await this.getRecentCredentials(params); const favouriteTeams = await this.getFavouriteTeams(params); const teams = this.getTeams(params); return RSVP.hash({ favouriteTeams, - teams + teams, + recentCredentials }); } + async getRecentCredentials(params) { + // TODO: get 5 most recently accessed encryptables + return await this.store.query("encryptable", params); + } + async getFavouriteTeams(params) { params["favourite"] = true; return await this.store.query("team", params); diff --git a/frontend/app/templates/components/dashboard-card.hbs b/frontend/app/templates/components/dashboard-card.hbs index 1c13f91bc..be8342ea0 100644 --- a/frontend/app/templates/components/dashboard-card.hbs +++ b/frontend/app/templates/components/dashboard-card.hbs @@ -7,5 +7,5 @@ -

{{this.team.name}}

- \ No newline at end of file +

{{this.content.name}}

+ diff --git a/frontend/app/templates/dashboard.hbs b/frontend/app/templates/dashboard.hbs index 1046fa61a..69c5939b9 100644 --- a/frontend/app/templates/dashboard.hbs +++ b/frontend/app/templates/dashboard.hbs @@ -1,20 +1,30 @@
+

Recent Credentials

+
+ {{#each this.model.recentCredentials as |encryptable|}} + + + + {{/each}} +
+ {{#if @model.favouriteTeams}}

Favourites

{{#each this.model.favouriteTeams as |team|}} - + {{/each}}
- {{/if}} + {{/if}} + {{#if this.model.teams}}

Teams

{{#each this.model.teams as |team|}} - + {{/each}}
From f52c87a0cf400ecad1fd51c6f2748c4b61174894 Mon Sep 17 00:00:00 2001 From: Julien Gaumez Date: Fri, 8 Apr 2022 14:53:03 +0200 Subject: [PATCH 09/82] Added basic frontend test for nav bar --- .../integration/components/nav-bar-test.js | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 frontend/tests/integration/components/nav-bar-test.js diff --git a/frontend/tests/integration/components/nav-bar-test.js b/frontend/tests/integration/components/nav-bar-test.js new file mode 100644 index 000000000..b11b262ca --- /dev/null +++ b/frontend/tests/integration/components/nav-bar-test.js @@ -0,0 +1,27 @@ +import { module, test } from "qunit"; +import ENV from "../../../config/environment"; +import { setupRenderingTest } from "ember-qunit"; +import { render } from "@ember/test-helpers"; +import { hbs } from "ember-cli-htmlbars"; +import { setLocale } from "ember-intl/test-support"; + +module("Integration | Component | nav-bar", function (hooks) { + setupRenderingTest(hooks); + + hooks.beforeEach(function () { + setLocale("en"); + ENV.currentUserGivenname = "Alice"; + }); + + hooks.afterEach(function () { + ENV.currentUserGivenname = null; + }); + + test("it renders", async function (assert) { + await render(hbs``); + + let text = this.element.textContent.trim(); + assert.ok(text.includes("Help")); + assert.ok(text.includes("Alice")); + }); +}); From 7c435b20d0139f13c5bbc815a7474d6a6bb0ae4c Mon Sep 17 00:00:00 2001 From: Julien Gaumez Date: Fri, 8 Apr 2022 15:02:04 +0200 Subject: [PATCH 10/82] deleted unused code --- frontend/app/components/nav-bar.js | 50 ------------------------------ 1 file changed, 50 deletions(-) diff --git a/frontend/app/components/nav-bar.js b/frontend/app/components/nav-bar.js index 6eb84f158..a01410d31 100644 --- a/frontend/app/components/nav-bar.js +++ b/frontend/app/components/nav-bar.js @@ -1,7 +1,5 @@ import Component from "@glimmer/component"; import { inject as service } from "@ember/service"; -import { action } from "@ember/object"; -import { tracked } from "@glimmer/tracking"; import ENV from "../config/environment"; export default class NavBarComponent extends Component { @@ -12,15 +10,6 @@ export default class NavBarComponent extends Component { searchInterval; - @tracked - isNewEncryptable = false; - - @tracked - isNewFolder = false; - - @tracked - isNewTeam = false; - get isStartpage() { return this.router.currentRouteName === "index"; } @@ -28,43 +17,4 @@ export default class NavBarComponent extends Component { get givenname() { return ENV.currentUserGivenname; } - - @action - setNavbarCollapsed(isCollapsed) { - this.navService.isNavbarCollapsed = isCollapsed; - } - - @action - toggleEncryptableCreating() { - this.isNewEncryptable = !this.isNewEncryptable; - } - - @action - toggleFolderCreating() { - this.isNewFolder = !this.isNewFolder; - } - - @action - toggleTeamCreating() { - this.isNewTeam = !this.isNewTeam; - } - - @action - searchByQuery() { - clearInterval(this.searchInterval); - this.searchInterval = setInterval(() => { - if ( - this.navService.searchQuery && - this.navService.searchQuery.trim(" ").length > 2 - ) { - this.router.transitionTo("teams.index", { - queryParams: { - q: this.navService.searchQuery, - team_id: undefined, - folder_id: undefined - } - }); - } - }, 800); - } } From 4d42a8058d8aa247f3c9db8cb1ef279d235b0326 Mon Sep 17 00:00:00 2001 From: Julien Gaumez Date: Fri, 8 Apr 2022 16:35:34 +0200 Subject: [PATCH 11/82] Revert "deleted unused code" Not smart to do this in this branch This reverts commit 7c435b20d0139f13c5bbc815a7474d6a6bb0ae4c. --- frontend/app/components/nav-bar.js | 50 ++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/frontend/app/components/nav-bar.js b/frontend/app/components/nav-bar.js index a01410d31..6eb84f158 100644 --- a/frontend/app/components/nav-bar.js +++ b/frontend/app/components/nav-bar.js @@ -1,5 +1,7 @@ import Component from "@glimmer/component"; import { inject as service } from "@ember/service"; +import { action } from "@ember/object"; +import { tracked } from "@glimmer/tracking"; import ENV from "../config/environment"; export default class NavBarComponent extends Component { @@ -10,6 +12,15 @@ export default class NavBarComponent extends Component { searchInterval; + @tracked + isNewEncryptable = false; + + @tracked + isNewFolder = false; + + @tracked + isNewTeam = false; + get isStartpage() { return this.router.currentRouteName === "index"; } @@ -17,4 +28,43 @@ export default class NavBarComponent extends Component { get givenname() { return ENV.currentUserGivenname; } + + @action + setNavbarCollapsed(isCollapsed) { + this.navService.isNavbarCollapsed = isCollapsed; + } + + @action + toggleEncryptableCreating() { + this.isNewEncryptable = !this.isNewEncryptable; + } + + @action + toggleFolderCreating() { + this.isNewFolder = !this.isNewFolder; + } + + @action + toggleTeamCreating() { + this.isNewTeam = !this.isNewTeam; + } + + @action + searchByQuery() { + clearInterval(this.searchInterval); + this.searchInterval = setInterval(() => { + if ( + this.navService.searchQuery && + this.navService.searchQuery.trim(" ").length > 2 + ) { + this.router.transitionTo("teams.index", { + queryParams: { + q: this.navService.searchQuery, + team_id: undefined, + folder_id: undefined + } + }); + } + }, 800); + } } From 08b59b35b0acbf4d7d45ef8d3990134eefd9234d Mon Sep 17 00:00:00 2001 From: MuStAgEDelta Date: Mon, 11 Apr 2022 13:49:01 +0200 Subject: [PATCH 12/82] Add spec Test file for the Personal log --- spec/system/nav_bar_system_spec.rb | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/spec/system/nav_bar_system_spec.rb b/spec/system/nav_bar_system_spec.rb index 7e012f6f7..4080b22b3 100644 --- a/spec/system/nav_bar_system_spec.rb +++ b/spec/system/nav_bar_system_spec.rb @@ -43,6 +43,26 @@ expect(page).to_not have_text('Admin') end + logout + end +it 'does show Log Buton for bob' do + login_as_user(:bob) + click("@User") + within(page.find('pzsh-menu-dropdown-item')) do + expect(page).to have_text('Log') + end + + logout + end +it 'does show Log Button for root' do + login_as_root + within(page.find('pzsh-menu-dropdown-item')) do + expect(page).to have_text('Log') + end + logout end end + +#Testen das Button dort im Drop Down +# From 0eb12574c10207ed0c4c621cf3bb8501151c582f Mon Sep 17 00:00:00 2001 From: MuStAgEDelta Date: Mon, 11 Apr 2022 14:28:59 +0200 Subject: [PATCH 13/82] change name and add testes --- spec/system/personal_log_system_spec.rb | 53 +++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 spec/system/personal_log_system_spec.rb diff --git a/spec/system/personal_log_system_spec.rb b/spec/system/personal_log_system_spec.rb new file mode 100644 index 000000000..16864f07e --- /dev/null +++ b/spec/system/personal_log_system_spec.rb @@ -0,0 +1,53 @@ + +require 'spec_helper' + +describe 'log', type: :system, js: true do + include SystemHelpers + + +it 'as admin is there everything avaible' do + login_as_root + visit('/log') + expect(page).to have_text('Personal activity log') + expect(page).not_to have_text('button id="ember4608"') + expect(page).to have_text('Action') + expect(page).to have_text('Date') + expect(page).to have_text('Change') +#require 'pry'; binding.pry + end +it 'is the Log correct' do + login_as_root + visit('/log') +#action + expect(page).to have_text('these are not implemented yet') + #Date + expect(page).not_to have_text('this neither') + #Change + expect(page).to have_text('nope just example') + logout + end + +it 'as user is there everything avaible' do + login_as_user(:tux) + visit('/log') + + expect(page).to have_text('Personal activity log') + expect(page).to have_text('Personal activity log') + expect(page).to have_text('button id="ember4608"') + expect(page).to have_text('Action') + expect(page).to have_text('Date') + expect(page).to have_text('Change') + end +it 'is the Log correct' do +#require 'pry'; binding.pry + login_as_user(:tux) + visit('/log') + #action + expect(page).to have_text('these are not implemented yet') + #Date + expect(page).to have_text('this neither') + #Change + expect(page).to have_text('nope just example') + logout + end +end From 81548f86f13e7e652b25f63ea80afb03e4482e47 Mon Sep 17 00:00:00 2001 From: MuStAgEDelta Date: Mon, 11 Apr 2022 14:42:52 +0200 Subject: [PATCH 14/82] change a 'not' mistake --- spec/system/personal_log_system_spec.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/spec/system/personal_log_system_spec.rb b/spec/system/personal_log_system_spec.rb index 16864f07e..62b44ad13 100644 --- a/spec/system/personal_log_system_spec.rb +++ b/spec/system/personal_log_system_spec.rb @@ -9,6 +9,7 @@ login_as_root visit('/log') expect(page).to have_text('Personal activity log') + #no side bar expect(page).not_to have_text('button id="ember4608"') expect(page).to have_text('Action') expect(page).to have_text('Date') @@ -21,7 +22,7 @@ #action expect(page).to have_text('these are not implemented yet') #Date - expect(page).not_to have_text('this neither') + expect(page).to have_text('this neither') #Change expect(page).to have_text('nope just example') logout @@ -33,7 +34,8 @@ expect(page).to have_text('Personal activity log') expect(page).to have_text('Personal activity log') - expect(page).to have_text('button id="ember4608"') + #no side bar + expect(page).not_to have_text('button id="ember4608"') expect(page).to have_text('Action') expect(page).to have_text('Date') expect(page).to have_text('Change') From 053d3b891a3ae169c63d4c6749ab92741997f02a Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Mon, 11 Apr 2022 15:39:23 +0200 Subject: [PATCH 15/82] Adds system specs for encryptables on dashboard --- spec/system/dashboard_system_spec.rb | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/spec/system/dashboard_system_spec.rb b/spec/system/dashboard_system_spec.rb index de143060d..2c56bb2d4 100644 --- a/spec/system/dashboard_system_spec.rb +++ b/spec/system/dashboard_system_spec.rb @@ -12,12 +12,13 @@ expect(page).to have_selector('pzsh-hero', visible: true) expect(page).to have_selector('pzsh-banner', visible: true) + expect(page).to have_text('Recent Credentials', count: 1) expect(page).to have_text('Favourites', count: 1) expect(page).to have_text('Teams', count: 1) expect(page).not_to have_selector 'div.content' - expect(page).to have_selector('div.dashboard-grid-card', count: 2) + expect(page).to have_selector('div.dashboard-grid-card', count: 3) end it 'navigates to team on team card click' do @@ -26,9 +27,27 @@ expect(page.current_path).to eq('/dashboard') expect(page).to have_selector('pzsh-hero', visible: true) - all('div.dashboard-grid-card').first.click - expect(page.current_path).to eq('/teams/235930340') + team = Team.first + + first('div.dashboard-grid-card', text: team.name).click + + expect(page.current_path).to eq("/teams/#{team.id}") + expect(page).to have_selector 'div.content' + end + + it 'navigates to encryptable on encryptable card click' do + login_as_user(:alice) + + expect(page.current_path).to eq('/dashboard') + + expect(page).to have_selector('pzsh-hero', visible: true) + + encryptable = Encryptable.first + + first('div.dashboard-grid-card', text: encryptable.name).click + + expect(page.current_path).to eq("/encryptables/#{encryptable.id}") expect(page).to have_selector 'div.content' end end From 60d4860772a0f0fb86ef2c80582cfd76f78a5383 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Mon, 11 Apr 2022 15:58:56 +0200 Subject: [PATCH 16/82] Fixes frontend spec for dashboard-card --- frontend/tests/integration/components/dashboard-card-test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/tests/integration/components/dashboard-card-test.js b/frontend/tests/integration/components/dashboard-card-test.js index 42a1806c1..316b4b05a 100644 --- a/frontend/tests/integration/components/dashboard-card-test.js +++ b/frontend/tests/integration/components/dashboard-card-test.js @@ -20,7 +20,7 @@ module("Integration | Component | dashboard-card", function (hooks) { // Template block usage: await render(hbs` - + `); From bd243a2bd4eee36dda2102b4d8e9bbd2f82aaf38 Mon Sep 17 00:00:00 2001 From: Julien Gaumez Date: Tue, 26 Apr 2022 17:09:17 +0200 Subject: [PATCH 17/82] Updated table in personal log. Added personal log controller and other stuff. --- .../api/personal_logs_controller.rb | 29 +++++++++++++++++++ config/routes/api.rb | 2 ++ frontend/app/components/log.js | 17 +++++++++++ frontend/app/router.js | 2 +- frontend/app/templates/log.hbs | 17 +---------- 5 files changed, 50 insertions(+), 17 deletions(-) create mode 100644 app/controllers/api/personal_logs_controller.rb create mode 100644 frontend/app/components/log.js diff --git a/app/controllers/api/personal_logs_controller.rb b/app/controllers/api/personal_logs_controller.rb new file mode 100644 index 000000000..f6f09c602 --- /dev/null +++ b/app/controllers/api/personal_logs_controller.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +class Api::PersonalLogsController < ApiController + self.permitted_attrs = :whodunnit + + def index(options = {}) + authorize(team, :index?, policy_class: LogPolicy) + render({ json: fetch_entries, + each_serializer: list_serializer, + root: 'Logs_'.pluralize } + .merge(render_options) + .merge(options.fetch(:render_options, {}))) + end + + def fetch_entries + PaperTrail.serializer = JSON + logs = current_user.encryptables.all.versions.find_by!(whodunnit: params[:current_user.id]) + logs.sort { |a, b| b.created_at <=> a.created_at } + end + + def list_serializer + @model_serializer ||= 'LogsSerializer'.constantize + end + + def team + @team ||= Encryptable.all.folder.team + end + end + \ No newline at end of file diff --git a/config/routes/api.rb b/config/routes/api.rb index bf1e34d94..c7dcfb43f 100644 --- a/config/routes/api.rb +++ b/config/routes/api.rb @@ -11,6 +11,8 @@ end end + resources :personal_logs + resources :encryptables, except: [:new, :edit] do resources :file_entries, only: [:create, :index, :destroy, :show] resources :logs diff --git a/frontend/app/components/log.js b/frontend/app/components/log.js new file mode 100644 index 000000000..1e1554e79 --- /dev/null +++ b/frontend/app/components/log.js @@ -0,0 +1,17 @@ +import Component from "@glimmer/component"; +import { inject as service } from "@ember/service"; + +export default class LogComponent extends Component { + @service store; + @service router; + @service intl; + @service notify; + @tracked + personal_log + + constructor() { + super(...arguments); + this.store + .query("paper-trail-version").then((result)=>{this.personal_log = result}); + } +} diff --git a/frontend/app/router.js b/frontend/app/router.js index 2fc53cd21..002d0921c 100644 --- a/frontend/app/router.js +++ b/frontend/app/router.js @@ -36,7 +36,7 @@ Router.map(function () { }); this.route("profile"); - this.route("log"); + this.route("log",{path: "/personal_logs"}); this.route("dashboard"); this.route("admin", function () { diff --git a/frontend/app/templates/log.hbs b/frontend/app/templates/log.hbs index 7353ad91d..6fecd8fdc 100644 --- a/frontend/app/templates/log.hbs +++ b/frontend/app/templates/log.hbs @@ -6,21 +6,6 @@

{{t "log.info"}}

- - - - - - - - - - - - - - - -
{{t "log.action"}} {{t "log.date"}} {{t "log.where"}}
these are not implemented yetthis neither {{moment-format @model.info.lastLoginAt "DD.MM.YYYY hh:mm"}}nope just example {{@model.info.lastLoginFrom}}
+ From b71a8adae98049b507e9290771e13a216503ae03 Mon Sep 17 00:00:00 2001 From: Julien Gaumez Date: Tue, 26 Apr 2022 17:25:03 +0200 Subject: [PATCH 18/82] Added missing files from last commit --- .../app/templates/components/log/table-row.hbs | 5 +++++ frontend/app/templates/components/log/table.hbs | 14 ++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 frontend/app/templates/components/log/table-row.hbs create mode 100644 frontend/app/templates/components/log/table.hbs diff --git a/frontend/app/templates/components/log/table-row.hbs b/frontend/app/templates/components/log/table-row.hbs new file mode 100644 index 000000000..fc4852fb9 --- /dev/null +++ b/frontend/app/templates/components/log/table-row.hbs @@ -0,0 +1,5 @@ + + {{t (concat "encryptables.log." @paperTrailVersion.event)}} + {{moment-format @paperTrailVersion.createdAt "DD.MM.YYYY hh:mm"}} + {{@paperTrailVersion.whodunnit}} + diff --git a/frontend/app/templates/components/log/table.hbs b/frontend/app/templates/components/log/table.hbs new file mode 100644 index 000000000..4f59b6a04 --- /dev/null +++ b/frontend/app/templates/components/log/table.hbs @@ -0,0 +1,14 @@ + + + + + + + + + + {{#each @personal_log as |paperTrailVersion|}} + + {{/each}} + +
{{t "log.action"}} {{t "log.date"}} {{t "log.where"}}
\ No newline at end of file From 682f3e01d7d5746329d787c2da1856401e1c11d9 Mon Sep 17 00:00:00 2001 From: Julien Gaumez Date: Thu, 28 Apr 2022 14:01:56 +0200 Subject: [PATCH 19/82] Renamed all files for personal log to personal_logs (was log before) --- app/controllers/redirected_routes/url_handler.rb | 2 +- frontend/app/components/log.js | 3 ++- frontend/app/router.js | 2 +- frontend/app/routes/{log.js => personal_logs.js} | 1 + frontend/app/services/nav-service.js | 2 +- frontend/app/templates/components/nav-bar.hbs | 2 +- .../templates/components/{log => personal-log}/table-row.hbs | 0 .../app/templates/components/{log => personal-log}/table.hbs | 0 frontend/app/templates/{log.hbs => personal_logs.hbs} | 2 +- 9 files changed, 8 insertions(+), 6 deletions(-) rename frontend/app/routes/{log.js => personal_logs.js} (99%) rename frontend/app/templates/components/{log => personal-log}/table-row.hbs (100%) rename frontend/app/templates/components/{log => personal-log}/table.hbs (100%) rename frontend/app/templates/{log.hbs => personal_logs.hbs} (75%) diff --git a/app/controllers/redirected_routes/url_handler.rb b/app/controllers/redirected_routes/url_handler.rb index 3c5da4941..78c1b79bf 100644 --- a/app/controllers/redirected_routes/url_handler.rb +++ b/app/controllers/redirected_routes/url_handler.rb @@ -10,7 +10,7 @@ class RedirectedRoutes::UrlHandler folder_show: /(^\/teams\/\d+\/folders\/\d+)$/, encryptables_show: /(^\/encryptables\/\d+)$/, profile_index: /(^\/profile)$/, - log_index: /(^\/log)$/, + log_index: /(^\/personal_logs)$/, admin_users_index: /(^\/admin\/users)$/, admin_settings: /(^\/admin\/settings)$/, dashboard: /(^\/dashboard)$/ diff --git a/frontend/app/components/log.js b/frontend/app/components/log.js index 1e1554e79..c0fcc6aba 100644 --- a/frontend/app/components/log.js +++ b/frontend/app/components/log.js @@ -6,8 +6,9 @@ export default class LogComponent extends Component { @service router; @service intl; @service notify; + @tracked - personal_log + personal_log; constructor() { super(...arguments); diff --git a/frontend/app/router.js b/frontend/app/router.js index 002d0921c..112e3856c 100644 --- a/frontend/app/router.js +++ b/frontend/app/router.js @@ -36,7 +36,7 @@ Router.map(function () { }); this.route("profile"); - this.route("log",{path: "/personal_logs"}); + this.route("personal_logs"); this.route("dashboard"); this.route("admin", function () { diff --git a/frontend/app/routes/log.js b/frontend/app/routes/personal_logs.js similarity index 99% rename from frontend/app/routes/log.js rename to frontend/app/routes/personal_logs.js index 3e089910b..8aecb9fca 100644 --- a/frontend/app/routes/log.js +++ b/frontend/app/routes/personal_logs.js @@ -16,6 +16,7 @@ export default class LogRoute extends BaseRoute { apiUsers: this.store.findAll("user-api") }); } + afterModel() { this.navService.clear(); diff --git a/frontend/app/services/nav-service.js b/frontend/app/services/nav-service.js index 0a7514938..a9b571d84 100644 --- a/frontend/app/services/nav-service.js +++ b/frontend/app/services/nav-service.js @@ -25,7 +25,7 @@ export default class NavService extends Service { "admin.settings", "admin.users", "profile", - "log" + "personal_logs" ]; return !sideNavBarDisabledRoutes.includes(this.router.currentRouteName); } diff --git a/frontend/app/templates/components/nav-bar.hbs b/frontend/app/templates/components/nav-bar.hbs index 6c0eb6a93..efa3d7d92 100644 --- a/frontend/app/templates/components/nav-bar.hbs +++ b/frontend/app/templates/components/nav-bar.hbs @@ -95,7 +95,7 @@ {{ t "profile_title" }} - + {{ t "log_title" }} diff --git a/frontend/app/templates/components/log/table-row.hbs b/frontend/app/templates/components/personal-log/table-row.hbs similarity index 100% rename from frontend/app/templates/components/log/table-row.hbs rename to frontend/app/templates/components/personal-log/table-row.hbs diff --git a/frontend/app/templates/components/log/table.hbs b/frontend/app/templates/components/personal-log/table.hbs similarity index 100% rename from frontend/app/templates/components/log/table.hbs rename to frontend/app/templates/components/personal-log/table.hbs diff --git a/frontend/app/templates/log.hbs b/frontend/app/templates/personal_logs.hbs similarity index 75% rename from frontend/app/templates/log.hbs rename to frontend/app/templates/personal_logs.hbs index 6fecd8fdc..ff05877f4 100644 --- a/frontend/app/templates/log.hbs +++ b/frontend/app/templates/personal_logs.hbs @@ -6,6 +6,6 @@

{{t "log.info"}}

- + From 032c002208cef08417827905f863b43d3f3712b1 Mon Sep 17 00:00:00 2001 From: Julien Gaumez Date: Thu, 28 Apr 2022 14:21:27 +0200 Subject: [PATCH 20/82] Fixed prettier/prettier errors and renamed one more file to personal_logs that i forgot before --- .../components/{log.js => personal_logs.js} | 2 +- frontend/app/routes/personal_logs.js | 1 - .../components/personal-log/table.hbs | 24 +++++++++---------- 3 files changed, 13 insertions(+), 14 deletions(-) rename frontend/app/components/{log.js => personal_logs.js} (95%) diff --git a/frontend/app/components/log.js b/frontend/app/components/personal_logs.js similarity index 95% rename from frontend/app/components/log.js rename to frontend/app/components/personal_logs.js index c0fcc6aba..f38dd157e 100644 --- a/frontend/app/components/log.js +++ b/frontend/app/components/personal_logs.js @@ -15,4 +15,4 @@ export default class LogComponent extends Component { this.store .query("paper-trail-version").then((result)=>{this.personal_log = result}); } -} +} \ No newline at end of file diff --git a/frontend/app/routes/personal_logs.js b/frontend/app/routes/personal_logs.js index 8aecb9fca..3e089910b 100644 --- a/frontend/app/routes/personal_logs.js +++ b/frontend/app/routes/personal_logs.js @@ -16,7 +16,6 @@ export default class LogRoute extends BaseRoute { apiUsers: this.store.findAll("user-api") }); } - afterModel() { this.navService.clear(); diff --git a/frontend/app/templates/components/personal-log/table.hbs b/frontend/app/templates/components/personal-log/table.hbs index 4f59b6a04..3ef98eaa8 100644 --- a/frontend/app/templates/components/personal-log/table.hbs +++ b/frontend/app/templates/components/personal-log/table.hbs @@ -1,14 +1,14 @@ - - - - - - - - - {{#each @personal_log as |paperTrailVersion|}} - - {{/each}} - + + + + + + + + + {{#each @personal_log as |paperTrailVersion|}} + + {{/each}} +
{{t "log.action"}} {{t "log.date"}} {{t "log.where"}}
{{t "log.action"}} {{t "log.date"}} {{t "log.where"}}
\ No newline at end of file From 600369338866f379e01f68caabeaca18e87cc8bc Mon Sep 17 00:00:00 2001 From: Julien Gaumez Date: Thu, 28 Apr 2022 14:43:33 +0200 Subject: [PATCH 21/82] Fixed one more file with prettier/prettier errors --- frontend/app/components/personal_logs.js | 36 ++++++++++++------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/frontend/app/components/personal_logs.js b/frontend/app/components/personal_logs.js index f38dd157e..fa9c5f7e1 100644 --- a/frontend/app/components/personal_logs.js +++ b/frontend/app/components/personal_logs.js @@ -1,18 +1,18 @@ -import Component from "@glimmer/component"; -import { inject as service } from "@ember/service"; - -export default class LogComponent extends Component { - @service store; - @service router; - @service intl; - @service notify; - - @tracked - personal_log; - - constructor() { - super(...arguments); - this.store - .query("paper-trail-version").then((result)=>{this.personal_log = result}); - } -} \ No newline at end of file +import Component from "@glimmer/component"; +import { inject as service } from "@ember/service"; + +export default class LogComponent extends Component { + @service store; + @service router; + @service intl; + @service notify; + + personal_log; + + constructor() { + super(...arguments); + this.store.query("paper-trail-version").then((result) => { + this.personal_log = result; + }); + } +} From 516c69b4ef3ec9e6179a0ea0537677b4b473cee0 Mon Sep 17 00:00:00 2001 From: Julien Gaumez Date: Thu, 28 Apr 2022 15:39:22 +0200 Subject: [PATCH 22/82] personal log now loads logs from backend, first working version --- frontend/app/adapters/paper-trail-version.js | 10 +++++++--- frontend/app/components/personal_logs.js | 2 ++ frontend/app/routes/personal_logs.js | 9 +-------- .../templates/components/personal-log/table-row.hbs | 2 +- .../app/templates/components/personal-log/table.hbs | 3 ++- frontend/app/templates/personal_logs.hbs | 2 +- 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/frontend/app/adapters/paper-trail-version.js b/frontend/app/adapters/paper-trail-version.js index a0dcb368e..dbdf0a7ba 100644 --- a/frontend/app/adapters/paper-trail-version.js +++ b/frontend/app/adapters/paper-trail-version.js @@ -1,19 +1,23 @@ import ApplicationAdapter from "./application"; export default ApplicationAdapter.extend({ - namespace: "api/encryptables", + namespace: "api", pathForType() { - return "logs"; + return "personal_logs"; }, urlForQuery(query, modelName) { if (query.encryptableId) { - let url = `/${this.namespace}/${query.encryptableId}/logs`; + let url = `/${this.namespace}/encryptables/${query.encryptableId}/logs`; delete query.encryptableId; return url; } + else { + let url = `/${this.namespace}/personal_logs`; + return url; + } return super.urlForQuery(query, modelName); } }); diff --git a/frontend/app/components/personal_logs.js b/frontend/app/components/personal_logs.js index fa9c5f7e1..15207a860 100644 --- a/frontend/app/components/personal_logs.js +++ b/frontend/app/components/personal_logs.js @@ -1,4 +1,5 @@ import Component from "@glimmer/component"; +import { tracked } from "@glimmer/tracking"; import { inject as service } from "@ember/service"; export default class LogComponent extends Component { @@ -7,6 +8,7 @@ export default class LogComponent extends Component { @service intl; @service notify; + @tracked personal_log; constructor() { diff --git a/frontend/app/routes/personal_logs.js b/frontend/app/routes/personal_logs.js index 3e089910b..fd6955ae4 100644 --- a/frontend/app/routes/personal_logs.js +++ b/frontend/app/routes/personal_logs.js @@ -7,14 +7,7 @@ export default class LogRoute extends BaseRoute { @service navService; model() { - return RSVP.hash({ - info: { - lastLoginAt: ENV.currentUserLastLoginAt, - lastLoginFrom: ENV.currentUserLastLoginFrom, - currentUserLabel: ENV.currentUserLabel - }, - apiUsers: this.store.findAll("user-api") - }); + return this.store.findAll("paper-trail-version"); } afterModel() { diff --git a/frontend/app/templates/components/personal-log/table-row.hbs b/frontend/app/templates/components/personal-log/table-row.hbs index fc4852fb9..1c3c0d538 100644 --- a/frontend/app/templates/components/personal-log/table-row.hbs +++ b/frontend/app/templates/components/personal-log/table-row.hbs @@ -1,5 +1,5 @@ {{t (concat "encryptables.log." @paperTrailVersion.event)}} {{moment-format @paperTrailVersion.createdAt "DD.MM.YYYY hh:mm"}} - {{@paperTrailVersion.whodunnit}} + {{@paperTrailVersion.encryptables}} diff --git a/frontend/app/templates/components/personal-log/table.hbs b/frontend/app/templates/components/personal-log/table.hbs index 3ef98eaa8..379b8e02a 100644 --- a/frontend/app/templates/components/personal-log/table.hbs +++ b/frontend/app/templates/components/personal-log/table.hbs @@ -8,7 +8,8 @@ {{#each @personal_log as |paperTrailVersion|}} - + {{/each}} + \ No newline at end of file diff --git a/frontend/app/templates/personal_logs.hbs b/frontend/app/templates/personal_logs.hbs index ff05877f4..ce9efff9f 100644 --- a/frontend/app/templates/personal_logs.hbs +++ b/frontend/app/templates/personal_logs.hbs @@ -6,6 +6,6 @@

{{t "log.info"}}

- + From 00f99a8cfa3b4944f3f2b592cc221f9ae464e92b Mon Sep 17 00:00:00 2001 From: Julien Gaumez Date: Thu, 28 Apr 2022 16:35:53 +0200 Subject: [PATCH 23/82] some minor improvements, but personal log only works if you access it after opening an encryptable --- frontend/app/templates/components/personal-log/table-row.hbs | 2 +- frontend/app/templates/components/personal-log/table.hbs | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/frontend/app/templates/components/personal-log/table-row.hbs b/frontend/app/templates/components/personal-log/table-row.hbs index 1c3c0d538..15408aa4e 100644 --- a/frontend/app/templates/components/personal-log/table-row.hbs +++ b/frontend/app/templates/components/personal-log/table-row.hbs @@ -1,5 +1,5 @@ {{t (concat "encryptables.log." @paperTrailVersion.event)}} {{moment-format @paperTrailVersion.createdAt "DD.MM.YYYY hh:mm"}} - {{@paperTrailVersion.encryptables}} + {{@paperTrailVersion.encryptable}} diff --git a/frontend/app/templates/components/personal-log/table.hbs b/frontend/app/templates/components/personal-log/table.hbs index 379b8e02a..f42c4cb53 100644 --- a/frontend/app/templates/components/personal-log/table.hbs +++ b/frontend/app/templates/components/personal-log/table.hbs @@ -10,6 +10,5 @@ {{#each @personal_log as |paperTrailVersion|}} {{/each}} - \ No newline at end of file From f3098c02561c9e30e3fa69cefa581c8c2d50ddfa Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Sun, 1 May 2022 20:16:08 +0200 Subject: [PATCH 24/82] Loads recent credentials from encryptables controller --- .../api/encryptables_controller.rb | 25 +++++++++++++++++++ frontend/app/routes/dashboard.js | 16 ++++++------ frontend/app/templates/dashboard.hbs | 20 ++++++++------- 3 files changed, 44 insertions(+), 17 deletions(-) diff --git a/app/controllers/api/encryptables_controller.rb b/app/controllers/api/encryptables_controller.rb index 9612a77bd..314cfc0b3 100644 --- a/app/controllers/api/encryptables_controller.rb +++ b/app/controllers/api/encryptables_controller.rb @@ -9,13 +9,38 @@ class Api::EncryptablesController < ApiController # GET /api/encryptables def index(options = {}) + if params['recent'].present? + authorize Encryptable + render({ json: fetch_recentCredentials, + root: model_root_key.pluralize } + .merge(render_options) + .merge(options.fetch(:render_options, {}))) + else authorize Encryptable render({ json: fetch_entries, root: model_root_key.pluralize } .merge(render_options) .merge(options.fetch(:render_options, {}))) + end end + def fetch_recentCredentials + logs = PaperTrail::Version.where(whodunnit: current_user.id) + logs = logs.sort { |a, b| b.created_at <=> a.created_at } + + credentialIds = [] + for log in logs do + credentialIds.push(log.item_id) + end + for id in credentialIds do + puts id + end + recentCredentialIds = credentialIds.uniq.first(5) + + recentCredentials = current_user.encryptables.find(recentCredentialIds) + recentCredentials + end + # GET /api/encryptables/:id def show authorize encryptable diff --git a/frontend/app/routes/dashboard.js b/frontend/app/routes/dashboard.js index 34f3f2099..c2553447f 100644 --- a/frontend/app/routes/dashboard.js +++ b/frontend/app/routes/dashboard.js @@ -13,21 +13,16 @@ export default class DashboardRoute extends BaseRoute { async model(params) { params["limit"] = 20; - const recentCredentials = await this.getRecentCredentials(params); + const recentCredentials = this.getRecentCredentials(params); const favouriteTeams = await this.getFavouriteTeams(params); const teams = this.getTeams(params); return RSVP.hash({ + recentCredentials, favouriteTeams, - teams, - recentCredentials + teams }); } - async getRecentCredentials(params) { - // TODO: get 5 most recently accessed encryptables - return await this.store.query("encryptable", params); - } - async getFavouriteTeams(params) { params["favourite"] = true; return await this.store.query("team", params); @@ -37,4 +32,9 @@ export default class DashboardRoute extends BaseRoute { params["favourite"] = false; return await this.store.query("team", params); } + + async getRecentCredentials(params) { + params["recent"] = true; + return await this.store.query("encryptable", params); + } } diff --git a/frontend/app/templates/dashboard.hbs b/frontend/app/templates/dashboard.hbs index 69c5939b9..bfc3e46c8 100644 --- a/frontend/app/templates/dashboard.hbs +++ b/frontend/app/templates/dashboard.hbs @@ -1,12 +1,14 @@
-

Recent Credentials

-
- {{#each this.model.recentCredentials as |encryptable|}} - - - - {{/each}} -
+ {{#if @model.recentCredentials}} +

Recent Credentials

+
+ {{#each this.model.recentCredentials as |encryptable|}} + + + + {{/each}} +
+ {{/if}} {{#if @model.favouriteTeams}}

Favourites

@@ -17,7 +19,7 @@ {{/each}}
- {{/if}} + {{/if}} {{#if this.model.teams}}

Teams

From 4bf8702849c62dc0bf75809e22b6b9256ddffb53 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Sun, 1 May 2022 20:27:53 +0200 Subject: [PATCH 25/82] cleanup encryptables_controller.rb --- .../api/encryptables_controller.rb | 36 +++++++++---------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/app/controllers/api/encryptables_controller.rb b/app/controllers/api/encryptables_controller.rb index 314cfc0b3..cfebddeb8 100644 --- a/app/controllers/api/encryptables_controller.rb +++ b/app/controllers/api/encryptables_controller.rb @@ -9,14 +9,14 @@ class Api::EncryptablesController < ApiController # GET /api/encryptables def index(options = {}) + authorize Encryptable if params['recent'].present? - authorize Encryptable render({ json: fetch_recentCredentials, root: model_root_key.pluralize } .merge(render_options) .merge(options.fetch(:render_options, {}))) else - authorize Encryptable + render({ json: fetch_entries, root: model_root_key.pluralize } .merge(render_options) @@ -24,23 +24,6 @@ def index(options = {}) end end - def fetch_recentCredentials - logs = PaperTrail::Version.where(whodunnit: current_user.id) - logs = logs.sort { |a, b| b.created_at <=> a.created_at } - - credentialIds = [] - for log in logs do - credentialIds.push(log.item_id) - end - for id in credentialIds do - puts id - end - recentCredentialIds = credentialIds.uniq.first(5) - - recentCredentials = current_user.encryptables.find(recentCredentialIds) - recentCredentials - end - # GET /api/encryptables/:id def show authorize encryptable @@ -100,6 +83,21 @@ def fetch_entries encryptables end + def fetch_recentCredentials + logs = PaperTrail::Version.where(whodunnit: current_user.id) + logs = logs.sort { |a, b| b.created_at <=> a.created_at } + + credentialIds = [] + for log in logs do + credentialIds.push(log.item_id) + end + + recentCredentialIds = credentialIds.uniq.first(5) + + recentCredentials = current_user.encryptables.find(recentCredentialIds) + recentCredentials + end + def encrypt(encryptable) if encryptable.folder_id_changed? # if folder id changed recheck team permission From c6f0c44a15d51525c9cc6b8b7d2e2641f4385e24 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Sun, 1 May 2022 20:45:20 +0200 Subject: [PATCH 26/82] Revert "some minor improvements, but personal log only works if you access it after opening an encryptable" This reverts commit 00f99a8cfa3b4944f3f2b592cc221f9ae464e92b. --- frontend/app/templates/components/personal-log/table-row.hbs | 2 +- frontend/app/templates/components/personal-log/table.hbs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend/app/templates/components/personal-log/table-row.hbs b/frontend/app/templates/components/personal-log/table-row.hbs index 15408aa4e..1c3c0d538 100644 --- a/frontend/app/templates/components/personal-log/table-row.hbs +++ b/frontend/app/templates/components/personal-log/table-row.hbs @@ -1,5 +1,5 @@ {{t (concat "encryptables.log." @paperTrailVersion.event)}} {{moment-format @paperTrailVersion.createdAt "DD.MM.YYYY hh:mm"}} - {{@paperTrailVersion.encryptable}} + {{@paperTrailVersion.encryptables}} diff --git a/frontend/app/templates/components/personal-log/table.hbs b/frontend/app/templates/components/personal-log/table.hbs index f42c4cb53..379b8e02a 100644 --- a/frontend/app/templates/components/personal-log/table.hbs +++ b/frontend/app/templates/components/personal-log/table.hbs @@ -10,5 +10,6 @@ {{#each @personal_log as |paperTrailVersion|}} {{/each}} + \ No newline at end of file From 91b07905bd9408984c896a33391ca21cdd870b2d Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Sun, 1 May 2022 20:45:44 +0200 Subject: [PATCH 27/82] Revert "personal log now loads logs from backend, first working version" This reverts commit 516c69b4ef3ec9e6179a0ea0537677b4b473cee0. --- frontend/app/adapters/paper-trail-version.js | 10 +++------- frontend/app/components/personal_logs.js | 2 -- frontend/app/routes/personal_logs.js | 9 ++++++++- .../templates/components/personal-log/table-row.hbs | 2 +- .../app/templates/components/personal-log/table.hbs | 3 +-- frontend/app/templates/personal_logs.hbs | 2 +- 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/frontend/app/adapters/paper-trail-version.js b/frontend/app/adapters/paper-trail-version.js index dbdf0a7ba..a0dcb368e 100644 --- a/frontend/app/adapters/paper-trail-version.js +++ b/frontend/app/adapters/paper-trail-version.js @@ -1,23 +1,19 @@ import ApplicationAdapter from "./application"; export default ApplicationAdapter.extend({ - namespace: "api", + namespace: "api/encryptables", pathForType() { - return "personal_logs"; + return "logs"; }, urlForQuery(query, modelName) { if (query.encryptableId) { - let url = `/${this.namespace}/encryptables/${query.encryptableId}/logs`; + let url = `/${this.namespace}/${query.encryptableId}/logs`; delete query.encryptableId; return url; } - else { - let url = `/${this.namespace}/personal_logs`; - return url; - } return super.urlForQuery(query, modelName); } }); diff --git a/frontend/app/components/personal_logs.js b/frontend/app/components/personal_logs.js index 15207a860..fa9c5f7e1 100644 --- a/frontend/app/components/personal_logs.js +++ b/frontend/app/components/personal_logs.js @@ -1,5 +1,4 @@ import Component from "@glimmer/component"; -import { tracked } from "@glimmer/tracking"; import { inject as service } from "@ember/service"; export default class LogComponent extends Component { @@ -8,7 +7,6 @@ export default class LogComponent extends Component { @service intl; @service notify; - @tracked personal_log; constructor() { diff --git a/frontend/app/routes/personal_logs.js b/frontend/app/routes/personal_logs.js index fd6955ae4..3e089910b 100644 --- a/frontend/app/routes/personal_logs.js +++ b/frontend/app/routes/personal_logs.js @@ -7,7 +7,14 @@ export default class LogRoute extends BaseRoute { @service navService; model() { - return this.store.findAll("paper-trail-version"); + return RSVP.hash({ + info: { + lastLoginAt: ENV.currentUserLastLoginAt, + lastLoginFrom: ENV.currentUserLastLoginFrom, + currentUserLabel: ENV.currentUserLabel + }, + apiUsers: this.store.findAll("user-api") + }); } afterModel() { diff --git a/frontend/app/templates/components/personal-log/table-row.hbs b/frontend/app/templates/components/personal-log/table-row.hbs index 1c3c0d538..fc4852fb9 100644 --- a/frontend/app/templates/components/personal-log/table-row.hbs +++ b/frontend/app/templates/components/personal-log/table-row.hbs @@ -1,5 +1,5 @@ {{t (concat "encryptables.log." @paperTrailVersion.event)}} {{moment-format @paperTrailVersion.createdAt "DD.MM.YYYY hh:mm"}} - {{@paperTrailVersion.encryptables}} + {{@paperTrailVersion.whodunnit}} diff --git a/frontend/app/templates/components/personal-log/table.hbs b/frontend/app/templates/components/personal-log/table.hbs index 379b8e02a..3ef98eaa8 100644 --- a/frontend/app/templates/components/personal-log/table.hbs +++ b/frontend/app/templates/components/personal-log/table.hbs @@ -8,8 +8,7 @@ {{#each @personal_log as |paperTrailVersion|}} - + {{/each}} - \ No newline at end of file diff --git a/frontend/app/templates/personal_logs.hbs b/frontend/app/templates/personal_logs.hbs index ce9efff9f..ff05877f4 100644 --- a/frontend/app/templates/personal_logs.hbs +++ b/frontend/app/templates/personal_logs.hbs @@ -6,6 +6,6 @@

{{t "log.info"}}

- + From 64c66db103c14b49c13383f3672b8d0a967e6bad Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Sun, 1 May 2022 20:46:06 +0200 Subject: [PATCH 28/82] Revert "Fixed one more file with prettier/prettier errors" This reverts commit 600369338866f379e01f68caabeaca18e87cc8bc. --- frontend/app/components/personal_logs.js | 36 ++++++++++++------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/frontend/app/components/personal_logs.js b/frontend/app/components/personal_logs.js index fa9c5f7e1..f38dd157e 100644 --- a/frontend/app/components/personal_logs.js +++ b/frontend/app/components/personal_logs.js @@ -1,18 +1,18 @@ -import Component from "@glimmer/component"; -import { inject as service } from "@ember/service"; - -export default class LogComponent extends Component { - @service store; - @service router; - @service intl; - @service notify; - - personal_log; - - constructor() { - super(...arguments); - this.store.query("paper-trail-version").then((result) => { - this.personal_log = result; - }); - } -} +import Component from "@glimmer/component"; +import { inject as service } from "@ember/service"; + +export default class LogComponent extends Component { + @service store; + @service router; + @service intl; + @service notify; + + @tracked + personal_log; + + constructor() { + super(...arguments); + this.store + .query("paper-trail-version").then((result)=>{this.personal_log = result}); + } +} \ No newline at end of file From 4e8b392b9e3ba7f1fa443c8decfd7b3d57d797a5 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Sun, 1 May 2022 20:46:21 +0200 Subject: [PATCH 29/82] Revert "Fixed prettier/prettier errors and renamed one more file to personal_logs that i forgot before" This reverts commit 032c002208cef08417827905f863b43d3f3712b1. --- .../components/{personal_logs.js => log.js} | 2 +- frontend/app/routes/personal_logs.js | 1 + .../components/personal-log/table.hbs | 24 +++++++++---------- 3 files changed, 14 insertions(+), 13 deletions(-) rename frontend/app/components/{personal_logs.js => log.js} (95%) diff --git a/frontend/app/components/personal_logs.js b/frontend/app/components/log.js similarity index 95% rename from frontend/app/components/personal_logs.js rename to frontend/app/components/log.js index f38dd157e..c0fcc6aba 100644 --- a/frontend/app/components/personal_logs.js +++ b/frontend/app/components/log.js @@ -15,4 +15,4 @@ export default class LogComponent extends Component { this.store .query("paper-trail-version").then((result)=>{this.personal_log = result}); } -} \ No newline at end of file +} diff --git a/frontend/app/routes/personal_logs.js b/frontend/app/routes/personal_logs.js index 3e089910b..8aecb9fca 100644 --- a/frontend/app/routes/personal_logs.js +++ b/frontend/app/routes/personal_logs.js @@ -16,6 +16,7 @@ export default class LogRoute extends BaseRoute { apiUsers: this.store.findAll("user-api") }); } + afterModel() { this.navService.clear(); diff --git a/frontend/app/templates/components/personal-log/table.hbs b/frontend/app/templates/components/personal-log/table.hbs index 3ef98eaa8..4f59b6a04 100644 --- a/frontend/app/templates/components/personal-log/table.hbs +++ b/frontend/app/templates/components/personal-log/table.hbs @@ -1,14 +1,14 @@ - - - - - - - - - {{#each @personal_log as |paperTrailVersion|}} - - {{/each}} - + + + + + + + + + {{#each @personal_log as |paperTrailVersion|}} + + {{/each}} +
{{t "log.action"}} {{t "log.date"}} {{t "log.where"}}
{{t "log.action"}} {{t "log.date"}} {{t "log.where"}}
\ No newline at end of file From 11d0af63b5021472b38d0d6d1b3a819987f2da35 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Sun, 1 May 2022 20:46:47 +0200 Subject: [PATCH 30/82] Revert "Renamed all files for personal log to personal_logs (was log before)" This reverts commit 682f3e01d7d5746329d787c2da1856401e1c11d9. --- app/controllers/redirected_routes/url_handler.rb | 2 +- frontend/app/components/log.js | 3 +-- frontend/app/router.js | 2 +- frontend/app/routes/{personal_logs.js => log.js} | 1 - frontend/app/services/nav-service.js | 2 +- .../templates/components/{personal-log => log}/table-row.hbs | 0 .../app/templates/components/{personal-log => log}/table.hbs | 0 frontend/app/templates/components/nav-bar.hbs | 2 +- frontend/app/templates/{personal_logs.hbs => log.hbs} | 2 +- 9 files changed, 6 insertions(+), 8 deletions(-) rename frontend/app/routes/{personal_logs.js => log.js} (99%) rename frontend/app/templates/components/{personal-log => log}/table-row.hbs (100%) rename frontend/app/templates/components/{personal-log => log}/table.hbs (100%) rename frontend/app/templates/{personal_logs.hbs => log.hbs} (75%) diff --git a/app/controllers/redirected_routes/url_handler.rb b/app/controllers/redirected_routes/url_handler.rb index 78c1b79bf..3c5da4941 100644 --- a/app/controllers/redirected_routes/url_handler.rb +++ b/app/controllers/redirected_routes/url_handler.rb @@ -10,7 +10,7 @@ class RedirectedRoutes::UrlHandler folder_show: /(^\/teams\/\d+\/folders\/\d+)$/, encryptables_show: /(^\/encryptables\/\d+)$/, profile_index: /(^\/profile)$/, - log_index: /(^\/personal_logs)$/, + log_index: /(^\/log)$/, admin_users_index: /(^\/admin\/users)$/, admin_settings: /(^\/admin\/settings)$/, dashboard: /(^\/dashboard)$/ diff --git a/frontend/app/components/log.js b/frontend/app/components/log.js index c0fcc6aba..1e1554e79 100644 --- a/frontend/app/components/log.js +++ b/frontend/app/components/log.js @@ -6,9 +6,8 @@ export default class LogComponent extends Component { @service router; @service intl; @service notify; - @tracked - personal_log; + personal_log constructor() { super(...arguments); diff --git a/frontend/app/router.js b/frontend/app/router.js index 112e3856c..002d0921c 100644 --- a/frontend/app/router.js +++ b/frontend/app/router.js @@ -36,7 +36,7 @@ Router.map(function () { }); this.route("profile"); - this.route("personal_logs"); + this.route("log",{path: "/personal_logs"}); this.route("dashboard"); this.route("admin", function () { diff --git a/frontend/app/routes/personal_logs.js b/frontend/app/routes/log.js similarity index 99% rename from frontend/app/routes/personal_logs.js rename to frontend/app/routes/log.js index 8aecb9fca..3e089910b 100644 --- a/frontend/app/routes/personal_logs.js +++ b/frontend/app/routes/log.js @@ -16,7 +16,6 @@ export default class LogRoute extends BaseRoute { apiUsers: this.store.findAll("user-api") }); } - afterModel() { this.navService.clear(); diff --git a/frontend/app/services/nav-service.js b/frontend/app/services/nav-service.js index a9b571d84..0a7514938 100644 --- a/frontend/app/services/nav-service.js +++ b/frontend/app/services/nav-service.js @@ -25,7 +25,7 @@ export default class NavService extends Service { "admin.settings", "admin.users", "profile", - "personal_logs" + "log" ]; return !sideNavBarDisabledRoutes.includes(this.router.currentRouteName); } diff --git a/frontend/app/templates/components/personal-log/table-row.hbs b/frontend/app/templates/components/log/table-row.hbs similarity index 100% rename from frontend/app/templates/components/personal-log/table-row.hbs rename to frontend/app/templates/components/log/table-row.hbs diff --git a/frontend/app/templates/components/personal-log/table.hbs b/frontend/app/templates/components/log/table.hbs similarity index 100% rename from frontend/app/templates/components/personal-log/table.hbs rename to frontend/app/templates/components/log/table.hbs diff --git a/frontend/app/templates/components/nav-bar.hbs b/frontend/app/templates/components/nav-bar.hbs index efa3d7d92..6c0eb6a93 100644 --- a/frontend/app/templates/components/nav-bar.hbs +++ b/frontend/app/templates/components/nav-bar.hbs @@ -95,7 +95,7 @@ {{ t "profile_title" }}
- + {{ t "log_title" }} diff --git a/frontend/app/templates/personal_logs.hbs b/frontend/app/templates/log.hbs similarity index 75% rename from frontend/app/templates/personal_logs.hbs rename to frontend/app/templates/log.hbs index ff05877f4..6fecd8fdc 100644 --- a/frontend/app/templates/personal_logs.hbs +++ b/frontend/app/templates/log.hbs @@ -6,6 +6,6 @@

{{t "log.info"}}

- + From c8e039e3428400d54c949f0b06c05384c25f0422 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Sun, 1 May 2022 20:47:39 +0200 Subject: [PATCH 31/82] Revert "Added missing files from last commit" This reverts commit b71a8adae98049b507e9290771e13a216503ae03. --- .../app/templates/components/log/table-row.hbs | 5 ----- frontend/app/templates/components/log/table.hbs | 14 -------------- 2 files changed, 19 deletions(-) delete mode 100644 frontend/app/templates/components/log/table-row.hbs delete mode 100644 frontend/app/templates/components/log/table.hbs diff --git a/frontend/app/templates/components/log/table-row.hbs b/frontend/app/templates/components/log/table-row.hbs deleted file mode 100644 index fc4852fb9..000000000 --- a/frontend/app/templates/components/log/table-row.hbs +++ /dev/null @@ -1,5 +0,0 @@ - - {{t (concat "encryptables.log." @paperTrailVersion.event)}} - {{moment-format @paperTrailVersion.createdAt "DD.MM.YYYY hh:mm"}} - {{@paperTrailVersion.whodunnit}} - diff --git a/frontend/app/templates/components/log/table.hbs b/frontend/app/templates/components/log/table.hbs deleted file mode 100644 index 4f59b6a04..000000000 --- a/frontend/app/templates/components/log/table.hbs +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - {{#each @personal_log as |paperTrailVersion|}} - - {{/each}} - -
{{t "log.action"}} {{t "log.date"}} {{t "log.where"}}
\ No newline at end of file From e2be0a943863a0a99ad540ee714f55d22202603f Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Sun, 1 May 2022 20:47:55 +0200 Subject: [PATCH 32/82] Revert "Updated table in personal log." This reverts commit bd243a2bd4eee36dda2102b4d8e9bbd2f82aaf38. --- .../api/personal_logs_controller.rb | 29 ------------------- config/routes/api.rb | 2 -- frontend/app/components/log.js | 17 ----------- frontend/app/router.js | 2 +- frontend/app/templates/log.hbs | 17 ++++++++++- 5 files changed, 17 insertions(+), 50 deletions(-) delete mode 100644 app/controllers/api/personal_logs_controller.rb delete mode 100644 frontend/app/components/log.js diff --git a/app/controllers/api/personal_logs_controller.rb b/app/controllers/api/personal_logs_controller.rb deleted file mode 100644 index f6f09c602..000000000 --- a/app/controllers/api/personal_logs_controller.rb +++ /dev/null @@ -1,29 +0,0 @@ -# frozen_string_literal: true - -class Api::PersonalLogsController < ApiController - self.permitted_attrs = :whodunnit - - def index(options = {}) - authorize(team, :index?, policy_class: LogPolicy) - render({ json: fetch_entries, - each_serializer: list_serializer, - root: 'Logs_'.pluralize } - .merge(render_options) - .merge(options.fetch(:render_options, {}))) - end - - def fetch_entries - PaperTrail.serializer = JSON - logs = current_user.encryptables.all.versions.find_by!(whodunnit: params[:current_user.id]) - logs.sort { |a, b| b.created_at <=> a.created_at } - end - - def list_serializer - @model_serializer ||= 'LogsSerializer'.constantize - end - - def team - @team ||= Encryptable.all.folder.team - end - end - \ No newline at end of file diff --git a/config/routes/api.rb b/config/routes/api.rb index c7dcfb43f..bf1e34d94 100644 --- a/config/routes/api.rb +++ b/config/routes/api.rb @@ -11,8 +11,6 @@ end end - resources :personal_logs - resources :encryptables, except: [:new, :edit] do resources :file_entries, only: [:create, :index, :destroy, :show] resources :logs diff --git a/frontend/app/components/log.js b/frontend/app/components/log.js deleted file mode 100644 index 1e1554e79..000000000 --- a/frontend/app/components/log.js +++ /dev/null @@ -1,17 +0,0 @@ -import Component from "@glimmer/component"; -import { inject as service } from "@ember/service"; - -export default class LogComponent extends Component { - @service store; - @service router; - @service intl; - @service notify; - @tracked - personal_log - - constructor() { - super(...arguments); - this.store - .query("paper-trail-version").then((result)=>{this.personal_log = result}); - } -} diff --git a/frontend/app/router.js b/frontend/app/router.js index 002d0921c..2fc53cd21 100644 --- a/frontend/app/router.js +++ b/frontend/app/router.js @@ -36,7 +36,7 @@ Router.map(function () { }); this.route("profile"); - this.route("log",{path: "/personal_logs"}); + this.route("log"); this.route("dashboard"); this.route("admin", function () { diff --git a/frontend/app/templates/log.hbs b/frontend/app/templates/log.hbs index 6fecd8fdc..7353ad91d 100644 --- a/frontend/app/templates/log.hbs +++ b/frontend/app/templates/log.hbs @@ -6,6 +6,21 @@

{{t "log.info"}}

- + + + + + + + + + + + + + + + +
{{t "log.action"}} {{t "log.date"}} {{t "log.where"}}
these are not implemented yetthis neither {{moment-format @model.info.lastLoginAt "DD.MM.YYYY hh:mm"}}nope just example {{@model.info.lastLoginFrom}}
From 40616c4fb82817d9afe88897cd9d5684dde012d1 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Sun, 1 May 2022 20:48:55 +0200 Subject: [PATCH 33/82] Revert " change a 'not' mistake" This reverts commit 81548f86f13e7e652b25f63ea80afb03e4482e47. --- spec/system/personal_log_system_spec.rb | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/spec/system/personal_log_system_spec.rb b/spec/system/personal_log_system_spec.rb index 62b44ad13..16864f07e 100644 --- a/spec/system/personal_log_system_spec.rb +++ b/spec/system/personal_log_system_spec.rb @@ -9,7 +9,6 @@ login_as_root visit('/log') expect(page).to have_text('Personal activity log') - #no side bar expect(page).not_to have_text('button id="ember4608"') expect(page).to have_text('Action') expect(page).to have_text('Date') @@ -22,7 +21,7 @@ #action expect(page).to have_text('these are not implemented yet') #Date - expect(page).to have_text('this neither') + expect(page).not_to have_text('this neither') #Change expect(page).to have_text('nope just example') logout @@ -34,8 +33,7 @@ expect(page).to have_text('Personal activity log') expect(page).to have_text('Personal activity log') - #no side bar - expect(page).not_to have_text('button id="ember4608"') + expect(page).to have_text('button id="ember4608"') expect(page).to have_text('Action') expect(page).to have_text('Date') expect(page).to have_text('Change') From 23621724f5060dc53ee7003cb1f250e5cada69f3 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Sun, 1 May 2022 20:49:07 +0200 Subject: [PATCH 34/82] Revert " change name and add testes" This reverts commit 0eb12574c10207ed0c4c621cf3bb8501151c582f. --- spec/system/personal_log_system_spec.rb | 53 ------------------------- 1 file changed, 53 deletions(-) delete mode 100644 spec/system/personal_log_system_spec.rb diff --git a/spec/system/personal_log_system_spec.rb b/spec/system/personal_log_system_spec.rb deleted file mode 100644 index 16864f07e..000000000 --- a/spec/system/personal_log_system_spec.rb +++ /dev/null @@ -1,53 +0,0 @@ - -require 'spec_helper' - -describe 'log', type: :system, js: true do - include SystemHelpers - - -it 'as admin is there everything avaible' do - login_as_root - visit('/log') - expect(page).to have_text('Personal activity log') - expect(page).not_to have_text('button id="ember4608"') - expect(page).to have_text('Action') - expect(page).to have_text('Date') - expect(page).to have_text('Change') -#require 'pry'; binding.pry - end -it 'is the Log correct' do - login_as_root - visit('/log') -#action - expect(page).to have_text('these are not implemented yet') - #Date - expect(page).not_to have_text('this neither') - #Change - expect(page).to have_text('nope just example') - logout - end - -it 'as user is there everything avaible' do - login_as_user(:tux) - visit('/log') - - expect(page).to have_text('Personal activity log') - expect(page).to have_text('Personal activity log') - expect(page).to have_text('button id="ember4608"') - expect(page).to have_text('Action') - expect(page).to have_text('Date') - expect(page).to have_text('Change') - end -it 'is the Log correct' do -#require 'pry'; binding.pry - login_as_user(:tux) - visit('/log') - #action - expect(page).to have_text('these are not implemented yet') - #Date - expect(page).to have_text('this neither') - #Change - expect(page).to have_text('nope just example') - logout - end -end From b21a88f64dd66cc4ee73cf54769e3c0becbbc862 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Sun, 1 May 2022 20:49:59 +0200 Subject: [PATCH 35/82] Revert " Add spec Test file for the Personal log" This reverts commit 08b59b35b0acbf4d7d45ef8d3990134eefd9234d. --- spec/system/nav_bar_system_spec.rb | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/spec/system/nav_bar_system_spec.rb b/spec/system/nav_bar_system_spec.rb index 4080b22b3..7e012f6f7 100644 --- a/spec/system/nav_bar_system_spec.rb +++ b/spec/system/nav_bar_system_spec.rb @@ -43,26 +43,6 @@ expect(page).to_not have_text('Admin') end - logout - end -it 'does show Log Buton for bob' do - login_as_user(:bob) - click("@User") - within(page.find('pzsh-menu-dropdown-item')) do - expect(page).to have_text('Log') - end - - logout - end -it 'does show Log Button for root' do - login_as_root - within(page.find('pzsh-menu-dropdown-item')) do - expect(page).to have_text('Log') - end - logout end end - -#Testen das Button dort im Drop Down -# From 073140afeddf7cb5b030da7cd5baf192a05e5139 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Sun, 1 May 2022 20:50:15 +0200 Subject: [PATCH 36/82] Revert "Revert "deleted unused code"" This reverts commit 4d42a8058d8aa247f3c9db8cb1ef279d235b0326. --- frontend/app/components/nav-bar.js | 50 ------------------------------ 1 file changed, 50 deletions(-) diff --git a/frontend/app/components/nav-bar.js b/frontend/app/components/nav-bar.js index 6eb84f158..a01410d31 100644 --- a/frontend/app/components/nav-bar.js +++ b/frontend/app/components/nav-bar.js @@ -1,7 +1,5 @@ import Component from "@glimmer/component"; import { inject as service } from "@ember/service"; -import { action } from "@ember/object"; -import { tracked } from "@glimmer/tracking"; import ENV from "../config/environment"; export default class NavBarComponent extends Component { @@ -12,15 +10,6 @@ export default class NavBarComponent extends Component { searchInterval; - @tracked - isNewEncryptable = false; - - @tracked - isNewFolder = false; - - @tracked - isNewTeam = false; - get isStartpage() { return this.router.currentRouteName === "index"; } @@ -28,43 +17,4 @@ export default class NavBarComponent extends Component { get givenname() { return ENV.currentUserGivenname; } - - @action - setNavbarCollapsed(isCollapsed) { - this.navService.isNavbarCollapsed = isCollapsed; - } - - @action - toggleEncryptableCreating() { - this.isNewEncryptable = !this.isNewEncryptable; - } - - @action - toggleFolderCreating() { - this.isNewFolder = !this.isNewFolder; - } - - @action - toggleTeamCreating() { - this.isNewTeam = !this.isNewTeam; - } - - @action - searchByQuery() { - clearInterval(this.searchInterval); - this.searchInterval = setInterval(() => { - if ( - this.navService.searchQuery && - this.navService.searchQuery.trim(" ").length > 2 - ) { - this.router.transitionTo("teams.index", { - queryParams: { - q: this.navService.searchQuery, - team_id: undefined, - folder_id: undefined - } - }); - } - }, 800); - } } From f366c677173b300e832ec8f6915e618caaa3fced Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Sun, 1 May 2022 20:50:35 +0200 Subject: [PATCH 37/82] Revert "deleted unused code" This reverts commit 7c435b20d0139f13c5bbc815a7474d6a6bb0ae4c. --- frontend/app/components/nav-bar.js | 50 ++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/frontend/app/components/nav-bar.js b/frontend/app/components/nav-bar.js index a01410d31..6eb84f158 100644 --- a/frontend/app/components/nav-bar.js +++ b/frontend/app/components/nav-bar.js @@ -1,5 +1,7 @@ import Component from "@glimmer/component"; import { inject as service } from "@ember/service"; +import { action } from "@ember/object"; +import { tracked } from "@glimmer/tracking"; import ENV from "../config/environment"; export default class NavBarComponent extends Component { @@ -10,6 +12,15 @@ export default class NavBarComponent extends Component { searchInterval; + @tracked + isNewEncryptable = false; + + @tracked + isNewFolder = false; + + @tracked + isNewTeam = false; + get isStartpage() { return this.router.currentRouteName === "index"; } @@ -17,4 +28,43 @@ export default class NavBarComponent extends Component { get givenname() { return ENV.currentUserGivenname; } + + @action + setNavbarCollapsed(isCollapsed) { + this.navService.isNavbarCollapsed = isCollapsed; + } + + @action + toggleEncryptableCreating() { + this.isNewEncryptable = !this.isNewEncryptable; + } + + @action + toggleFolderCreating() { + this.isNewFolder = !this.isNewFolder; + } + + @action + toggleTeamCreating() { + this.isNewTeam = !this.isNewTeam; + } + + @action + searchByQuery() { + clearInterval(this.searchInterval); + this.searchInterval = setInterval(() => { + if ( + this.navService.searchQuery && + this.navService.searchQuery.trim(" ").length > 2 + ) { + this.router.transitionTo("teams.index", { + queryParams: { + q: this.navService.searchQuery, + team_id: undefined, + folder_id: undefined + } + }); + } + }, 800); + } } From 41efcc650500f700005d6e37e6c8ca9c79d3aca8 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Sun, 1 May 2022 20:50:58 +0200 Subject: [PATCH 38/82] Revert "Added basic frontend test for nav bar" This reverts commit f52c87a0cf400ecad1fd51c6f2748c4b61174894. --- .../integration/components/nav-bar-test.js | 27 ------------------- 1 file changed, 27 deletions(-) delete mode 100644 frontend/tests/integration/components/nav-bar-test.js diff --git a/frontend/tests/integration/components/nav-bar-test.js b/frontend/tests/integration/components/nav-bar-test.js deleted file mode 100644 index b11b262ca..000000000 --- a/frontend/tests/integration/components/nav-bar-test.js +++ /dev/null @@ -1,27 +0,0 @@ -import { module, test } from "qunit"; -import ENV from "../../../config/environment"; -import { setupRenderingTest } from "ember-qunit"; -import { render } from "@ember/test-helpers"; -import { hbs } from "ember-cli-htmlbars"; -import { setLocale } from "ember-intl/test-support"; - -module("Integration | Component | nav-bar", function (hooks) { - setupRenderingTest(hooks); - - hooks.beforeEach(function () { - setLocale("en"); - ENV.currentUserGivenname = "Alice"; - }); - - hooks.afterEach(function () { - ENV.currentUserGivenname = null; - }); - - test("it renders", async function (assert) { - await render(hbs``); - - let text = this.element.textContent.trim(); - assert.ok(text.includes("Help")); - assert.ok(text.includes("Alice")); - }); -}); From 43b56e602b7abf81a92a9d160fb51d74b2e0f7be Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Sun, 1 May 2022 20:51:20 +0200 Subject: [PATCH 39/82] Revert "Fixed refresh bug when on /log page. (the bug mentioned in earlier commit)" This reverts commit 24dd0767656425d696f8b929d15ccb89f0e76dab. --- app/controllers/redirected_routes/url_handler.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/app/controllers/redirected_routes/url_handler.rb b/app/controllers/redirected_routes/url_handler.rb index 3c5da4941..e45bb7dec 100644 --- a/app/controllers/redirected_routes/url_handler.rb +++ b/app/controllers/redirected_routes/url_handler.rb @@ -10,7 +10,6 @@ class RedirectedRoutes::UrlHandler folder_show: /(^\/teams\/\d+\/folders\/\d+)$/, encryptables_show: /(^\/encryptables\/\d+)$/, profile_index: /(^\/profile)$/, - log_index: /(^\/log)$/, admin_users_index: /(^\/admin\/users)$/, admin_settings: /(^\/admin\/settings)$/, dashboard: /(^\/dashboard)$/ From 67b11f2a2bc864f61f0a888a11292add2d1c3ab2 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Sun, 1 May 2022 20:52:52 +0200 Subject: [PATCH 40/82] Revert "Changed icon for Log in nav bar drop down menu, took the closest one available." This reverts commit 4bcdc377243a51793bcc2dac11b508bda4697314. --- frontend/app/templates/components/nav-bar.hbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/app/templates/components/nav-bar.hbs b/frontend/app/templates/components/nav-bar.hbs index 6c0eb6a93..2604756d5 100644 --- a/frontend/app/templates/components/nav-bar.hbs +++ b/frontend/app/templates/components/nav-bar.hbs @@ -96,7 +96,7 @@ {{ t "profile_title" }}
- + {{ t "log_title" }} From d62d0a7fa263853c9ee486ae94b9763981432f2f Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Sun, 1 May 2022 20:53:20 +0200 Subject: [PATCH 41/82] Revert "removed nav side bar from log page and fixed prettier/prettier error" This reverts commit fc1cb07c7adf588073c8dc675ec7cd88e08ab986. --- frontend/app/routes/log.js | 46 ++++++++++++++-------------- frontend/app/services/nav-service.js | 3 +- 2 files changed, 24 insertions(+), 25 deletions(-) diff --git a/frontend/app/routes/log.js b/frontend/app/routes/log.js index 3e089910b..ef482fe57 100644 --- a/frontend/app/routes/log.js +++ b/frontend/app/routes/log.js @@ -1,23 +1,23 @@ -import BaseRoute from "./base"; -import ENV from "../config/environment"; -import RSVP from "rsvp"; -import { inject as service } from "@ember/service"; - -export default class LogRoute extends BaseRoute { - @service navService; - - model() { - return RSVP.hash({ - info: { - lastLoginAt: ENV.currentUserLastLoginAt, - lastLoginFrom: ENV.currentUserLastLoginFrom, - currentUserLabel: ENV.currentUserLabel - }, - apiUsers: this.store.findAll("user-api") - }); - } - - afterModel() { - this.navService.clear(); - } -} +import BaseRoute from "./base"; +import ENV from "../config/environment"; +import RSVP from "rsvp"; +import { inject as service } from "@ember/service"; + +export default class LogRoute extends BaseRoute { + @service navService; + + model() { + return RSVP.hash({ + info: { + lastLoginAt: ENV.currentUserLastLoginAt, + lastLoginFrom: ENV.currentUserLastLoginFrom, + currentUserLabel: ENV.currentUserLabel + }, + apiUsers: this.store.findAll("user-api") + }); + } + + afterModel() { + this.navService.clear(); + } +} diff --git a/frontend/app/services/nav-service.js b/frontend/app/services/nav-service.js index 0a7514938..45638678b 100644 --- a/frontend/app/services/nav-service.js +++ b/frontend/app/services/nav-service.js @@ -24,8 +24,7 @@ export default class NavService extends Service { const sideNavBarDisabledRoutes = [ "admin.settings", "admin.users", - "profile", - "log" + "profile" ]; return !sideNavBarDisabledRoutes.includes(this.router.currentRouteName); } From d90628403f86741db97645e00f40bd2160084b61 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Sun, 1 May 2022 20:53:38 +0200 Subject: [PATCH 42/82] Revert "Continued frontend implementation for personal log. Refresh on /log doesnt work and paper trail feature aren't included yet." This reverts commit 903cecdbb8a7beaf06a208f99973997791d3aa9f. --- frontend/app/router.js | 1 - frontend/app/templates/components/nav-bar.hbs | 2 +- frontend/app/templates/log.hbs | 44 ++++++++++++------- frontend/translations/ch_be.yml | 8 +--- frontend/translations/de.yml | 8 +--- frontend/translations/en.yml | 8 +--- frontend/translations/fr.yml | 8 +--- 7 files changed, 32 insertions(+), 47 deletions(-) diff --git a/frontend/app/router.js b/frontend/app/router.js index 2fc53cd21..eabcf5eba 100644 --- a/frontend/app/router.js +++ b/frontend/app/router.js @@ -36,7 +36,6 @@ Router.map(function () { }); this.route("profile"); - this.route("log"); this.route("dashboard"); this.route("admin", function () { diff --git a/frontend/app/templates/components/nav-bar.hbs b/frontend/app/templates/components/nav-bar.hbs index 2604756d5..5dae570d4 100644 --- a/frontend/app/templates/components/nav-bar.hbs +++ b/frontend/app/templates/components/nav-bar.hbs @@ -97,7 +97,7 @@ - {{ t "log_title" }} + {{ t "log" }} diff --git a/frontend/app/templates/log.hbs b/frontend/app/templates/log.hbs index 7353ad91d..81e738bbe 100644 --- a/frontend/app/templates/log.hbs +++ b/frontend/app/templates/log.hbs @@ -3,24 +3,34 @@
-

{{t "log.info"}}

+

{{t "profile.index.title"}}

+
+
+
- - - - - - - - - - - - - - - -
{{t "log.action"}} {{t "log.date"}} {{t "log.where"}}
these are not implemented yetthis neither {{moment-format @model.info.lastLoginAt "DD.MM.YYYY hh:mm"}}nope just example {{@model.info.lastLoginFrom}}
+ + + + + + + + + + + + + + + +
{{t "profile.info.last_login_at"}} {{t "profile.info.last_login_from"}}
{{moment-format @model.info.lastLoginAt "DD.MM.YYYY hh:mm"}}{{@model.info.lastLoginFrom}}
+
+ +
+ +
+
+
diff --git a/frontend/translations/ch_be.yml b/frontend/translations/ch_be.yml index faab357af..3ee5ee6ed 100644 --- a/frontend/translations/ch_be.yml +++ b/frontend/translations/ch_be.yml @@ -29,7 +29,7 @@ ch_be: settings: Istellige recrypt_requests: Recrypt Afragä users: Benutzer - log_title: Protokou + log: Protokou profile_title: Profiu change_password: Passwort wächslä last_login_date_and_from: "Ds letschtä Login isch am %{last_login_at} gsi vo %{last_login_from}" @@ -352,12 +352,6 @@ ch_be: five_mins: Füf minutä twelve_hours: Zwöuf Stung infinite: Eewigs - - log: - info: Persöhnlechs aktivitäts Protokou - action: Aktion - date: Datum - where: Änderig flashes: api: diff --git a/frontend/translations/de.yml b/frontend/translations/de.yml index e7768095c..912131596 100644 --- a/frontend/translations/de.yml +++ b/frontend/translations/de.yml @@ -32,7 +32,7 @@ de: recrypt_requests: Recrypt Anfragen users: Benutzer user: Benutzer - log_title: Protokoll + log: Protokoll profile_title: Profil change_password: Passwort wechseln last_login_date_and_from: "Das letzte Login war am %{last_login_at} von %{last_login_from}" @@ -325,12 +325,6 @@ de: title: Entferne Api-User content: "Lösche Api-User %{username}?" - log: - info: Persöhnliches Aktivitätsprotokoll - action: Aktion - date: Datum - where: Änderung - flashes: api: admin: diff --git a/frontend/translations/en.yml b/frontend/translations/en.yml index 33124cfc9..a7a3694d1 100644 --- a/frontend/translations/en.yml +++ b/frontend/translations/en.yml @@ -32,7 +32,7 @@ en: recrypt_requests: Recrypt requests users: Users user: User - log_title: Log + log: Log profile_title: Profile change_password: Change password last_login_date_and_from: "The last login was on %{last_login_at} from %{last_login_from}" @@ -327,12 +327,6 @@ en: delete: title: Remove Api-User content: "Delete Api-User %{username}?" - - log: - info: Personal activity log - action: Action - date: Date - where: Change flashes: api: diff --git a/frontend/translations/fr.yml b/frontend/translations/fr.yml index e04e88787..816bb3f19 100644 --- a/frontend/translations/fr.yml +++ b/frontend/translations/fr.yml @@ -32,7 +32,7 @@ fr: recrypt_requests: Demandes de re crypt users: Utilisateur user: Utilisateur - log_title: Journal + log: Journal profile_title: Profilé change_password: Changer le mot de passe last_login_date_and_from: "La dernière connexion était le %{last_login_at} de %{last_login_from}" @@ -327,12 +327,6 @@ fr: delete: title: Supprimer Api-User content: "Est-ce que vous voulez supprimer l'utilisateur d'Api %{username}?" - - log: - info: Journal d'activité personnel - action: Action - date: Date - where: Changement flashes: api: From 855d3ec5988301d2eec68bfdc0427eab4bae7e90 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Sun, 1 May 2022 20:54:14 +0200 Subject: [PATCH 43/82] Revert "Started frontend implementation of Log butten/page" This reverts commit 208e9af550334991a4e4a39b005b440df2483d16. --- frontend/app/routes/log.js | 23 ------------ frontend/app/templates/components/nav-bar.hbs | 4 --- frontend/app/templates/log.hbs | 36 ------------------- 3 files changed, 63 deletions(-) delete mode 100644 frontend/app/routes/log.js delete mode 100644 frontend/app/templates/log.hbs diff --git a/frontend/app/routes/log.js b/frontend/app/routes/log.js deleted file mode 100644 index ef482fe57..000000000 --- a/frontend/app/routes/log.js +++ /dev/null @@ -1,23 +0,0 @@ -import BaseRoute from "./base"; -import ENV from "../config/environment"; -import RSVP from "rsvp"; -import { inject as service } from "@ember/service"; - -export default class LogRoute extends BaseRoute { - @service navService; - - model() { - return RSVP.hash({ - info: { - lastLoginAt: ENV.currentUserLastLoginAt, - lastLoginFrom: ENV.currentUserLastLoginFrom, - currentUserLabel: ENV.currentUserLabel - }, - apiUsers: this.store.findAll("user-api") - }); - } - - afterModel() { - this.navService.clear(); - } -} diff --git a/frontend/app/templates/components/nav-bar.hbs b/frontend/app/templates/components/nav-bar.hbs index 5dae570d4..9dab20544 100644 --- a/frontend/app/templates/components/nav-bar.hbs +++ b/frontend/app/templates/components/nav-bar.hbs @@ -95,10 +95,6 @@ {{ t "profile_title" }} - - - {{ t "log" }} - {{ t "logout" }} diff --git a/frontend/app/templates/log.hbs b/frontend/app/templates/log.hbs deleted file mode 100644 index 81e738bbe..000000000 --- a/frontend/app/templates/log.hbs +++ /dev/null @@ -1,36 +0,0 @@ -
- -
-
-
-

{{t "profile.index.title"}}

-
-
- -
-
- - - - - - - - - - - - - - - -
{{t "profile.info.last_login_at"}} {{t "profile.info.last_login_from"}}
{{moment-format @model.info.lastLoginAt "DD.MM.YYYY hh:mm"}}{{@model.info.lastLoginFrom}}
-
- -
- -
-
-
-
-
From 98f469fa6b634658097a634a341a875dee7d1ddc Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Sun, 1 May 2022 20:54:52 +0200 Subject: [PATCH 44/82] Revert " add translation" This reverts commit 992980a16e0ce30da2ed4c99fb5004a0bb1593e8. --- frontend/translations/fr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/translations/fr.yml b/frontend/translations/fr.yml index 816bb3f19..e7b103b8f 100644 --- a/frontend/translations/fr.yml +++ b/frontend/translations/fr.yml @@ -32,7 +32,7 @@ fr: recrypt_requests: Demandes de re crypt users: Utilisateur user: Utilisateur - log: Journal + Log: Journal profile_title: Profilé change_password: Changer le mot de passe last_login_date_and_from: "La dernière connexion était le %{last_login_at} de %{last_login_from}" From d5875d5a7c7b3814b97af08eb0941ac6616becfe Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Sun, 1 May 2022 20:55:05 +0200 Subject: [PATCH 45/82] Revert " add translation for Log" This reverts commit 5f57938b21fa056345c33336930d0fe1fa346db1. --- frontend/translations/ch_be.yml | 1 - frontend/translations/de.yml | 1 - frontend/translations/en.yml | 1 - frontend/translations/fr.yml | 1 - 4 files changed, 4 deletions(-) diff --git a/frontend/translations/ch_be.yml b/frontend/translations/ch_be.yml index 3ee5ee6ed..4699146fb 100644 --- a/frontend/translations/ch_be.yml +++ b/frontend/translations/ch_be.yml @@ -29,7 +29,6 @@ ch_be: settings: Istellige recrypt_requests: Recrypt Afragä users: Benutzer - log: Protokou profile_title: Profiu change_password: Passwort wächslä last_login_date_and_from: "Ds letschtä Login isch am %{last_login_at} gsi vo %{last_login_from}" diff --git a/frontend/translations/de.yml b/frontend/translations/de.yml index 912131596..47e3068b4 100644 --- a/frontend/translations/de.yml +++ b/frontend/translations/de.yml @@ -32,7 +32,6 @@ de: recrypt_requests: Recrypt Anfragen users: Benutzer user: Benutzer - log: Protokoll profile_title: Profil change_password: Passwort wechseln last_login_date_and_from: "Das letzte Login war am %{last_login_at} von %{last_login_from}" diff --git a/frontend/translations/en.yml b/frontend/translations/en.yml index a7a3694d1..412afb40f 100644 --- a/frontend/translations/en.yml +++ b/frontend/translations/en.yml @@ -32,7 +32,6 @@ en: recrypt_requests: Recrypt requests users: Users user: User - log: Log profile_title: Profile change_password: Change password last_login_date_and_from: "The last login was on %{last_login_at} from %{last_login_from}" diff --git a/frontend/translations/fr.yml b/frontend/translations/fr.yml index e7b103b8f..2678ef4e0 100644 --- a/frontend/translations/fr.yml +++ b/frontend/translations/fr.yml @@ -32,7 +32,6 @@ fr: recrypt_requests: Demandes de re crypt users: Utilisateur user: Utilisateur - Log: Journal profile_title: Profilé change_password: Changer le mot de passe last_login_date_and_from: "La dernière connexion était le %{last_login_at} de %{last_login_from}" From d80c71c6c3ed5703018d329dbe2287af9c308a15 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Sun, 1 May 2022 22:46:30 +0200 Subject: [PATCH 46/82] Creates encryptables filtered_list presenter to handle parameters passed with requests --- .../api/encryptables_controller.rb | 29 +---------- app/presenters/encryptables/filtered_list.rb | 52 +++++++++++++++++++ frontend/app/routes/dashboard.js | 13 +++-- 3 files changed, 62 insertions(+), 32 deletions(-) create mode 100644 app/presenters/encryptables/filtered_list.rb diff --git a/app/controllers/api/encryptables_controller.rb b/app/controllers/api/encryptables_controller.rb index 43dc53d16..be364f846 100644 --- a/app/controllers/api/encryptables_controller.rb +++ b/app/controllers/api/encryptables_controller.rb @@ -10,18 +10,11 @@ class Api::EncryptablesController < ApiController # GET /api/encryptables def index(options = {}) authorize Encryptable - if params['recent'].present? - render({ json: fetch_recentCredentials, - root: model_root_key.pluralize } - .merge(render_options) - .merge(options.fetch(:render_options, {}))) - else - render({ json: fetch_entries, root: model_root_key.pluralize } .merge(render_options) .merge(options.fetch(:render_options, {}))) - end + end # GET /api/encryptables/:id @@ -79,28 +72,10 @@ def model_class end def fetch_entries - encryptables = current_user.encryptables - if tag_param.present? - encryptables = encryptables.find_by(tag: tag_param) - end + encryptables = Encryptables::FilteredList.new(current_user, params).fetch_entries encryptables end - def fetch_recentCredentials - logs = PaperTrail::Version.where(whodunnit: current_user.id) - logs = logs.sort { |a, b| b.created_at <=> a.created_at } - - credentialIds = [] - for log in logs do - credentialIds.push(log.item_id) - end - - recentCredentialIds = credentialIds.uniq.first(5) - - recentCredentials = current_user.encryptables.find(recentCredentialIds) - recentCredentials - end - def encrypt(encryptable) if encryptable.folder_id_changed? # if folder id changed recheck team permission diff --git a/app/presenters/encryptables/filtered_list.rb b/app/presenters/encryptables/filtered_list.rb new file mode 100644 index 000000000..cc87a5d76 --- /dev/null +++ b/app/presenters/encryptables/filtered_list.rb @@ -0,0 +1,52 @@ +# frozen_string_literal: true + +module ::Encryptables + class FilteredList < ::FilteredList + + def fetch_entries + filtered_encryptables = encryptables + + filtered_encryptables = filter_by_recent if recent.present? && true?(recent) + filtered_encryptables = filter_by_tag_params if tag_param.present? + + filtered_encryptables + end + + private + + def filter_by_tag_params + encryptables = encryptables.find_by(tag: tag_param) + end + + def tag_param + @params[:tag] + end + + def recent + @params[:recent] + end + + def encryptables + @current_user.encryptables + .limit(limit) + end + + def limit + @params[:limit] + end + + def filter_by_recent + logs = PaperTrail::Version.where(whodunnit: @current_user.id) + logs = logs.sort { |a, b| b.created_at <=> a.created_at } + + credentialIds = [] + for log in logs do + credentialIds.push(log.item_id) + end + + recentCredentialIds = credentialIds.uniq.first(limit.to_i) + + recentCredentials = @current_user.encryptables.find(recentCredentialIds) + end + end +end diff --git a/frontend/app/routes/dashboard.js b/frontend/app/routes/dashboard.js index c2553447f..90bd3d6a6 100644 --- a/frontend/app/routes/dashboard.js +++ b/frontend/app/routes/dashboard.js @@ -12,28 +12,31 @@ export default class DashboardRoute extends BaseRoute { }; async model(params) { - params["limit"] = 20; - const recentCredentials = this.getRecentCredentials(params); const favouriteTeams = await this.getFavouriteTeams(params); - const teams = this.getTeams(params); + const teams = await this.getTeams(params); + const recentCredentials = await this.getRecentCredentials(params); + return RSVP.hash({ - recentCredentials, favouriteTeams, - teams + teams, + recentCredentials }); } async getFavouriteTeams(params) { + params["limit"] = 20; params["favourite"] = true; return await this.store.query("team", params); } async getTeams(params) { + params["limit"] = 20; params["favourite"] = false; return await this.store.query("team", params); } async getRecentCredentials(params) { + params["limit"] = 5; params["recent"] = true; return await this.store.query("encryptable", params); } From 9be00db3ff27fef88b0a0c7533ce162b712df25d Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Sun, 1 May 2022 23:07:15 +0200 Subject: [PATCH 47/82] fixes rubocop warnings --- app/controllers/api/encryptables_controller.rb | 10 ++-------- app/presenters/encryptables/filtered_list.rb | 18 +++++++++--------- spec/system/dashboard_system_spec.rb | 2 +- 3 files changed, 12 insertions(+), 18 deletions(-) diff --git a/app/controllers/api/encryptables_controller.rb b/app/controllers/api/encryptables_controller.rb index be364f846..a9c30ad77 100644 --- a/app/controllers/api/encryptables_controller.rb +++ b/app/controllers/api/encryptables_controller.rb @@ -9,12 +9,11 @@ class Api::EncryptablesController < ApiController # GET /api/encryptables def index(options = {}) - authorize Encryptable + authorize Encryptable render({ json: fetch_entries, root: model_root_key.pluralize } .merge(render_options) .merge(options.fetch(:render_options, {}))) - end # GET /api/encryptables/:id @@ -72,8 +71,7 @@ def model_class end def fetch_entries - encryptables = Encryptables::FilteredList.new(current_user, params).fetch_entries - encryptables + Encryptables::FilteredList.new(current_user, params).fetch_entries end def encrypt(encryptable) @@ -99,10 +97,6 @@ def query_param params[:q] end - def tag_param - params[:tag] - end - def encryptable_move_handler EncryptableMoveHandler.new(encryptable, session[:private_key], current_user) end diff --git a/app/presenters/encryptables/filtered_list.rb b/app/presenters/encryptables/filtered_list.rb index cc87a5d76..0dd7aaa4c 100644 --- a/app/presenters/encryptables/filtered_list.rb +++ b/app/presenters/encryptables/filtered_list.rb @@ -15,7 +15,7 @@ def fetch_entries private def filter_by_tag_params - encryptables = encryptables.find_by(tag: tag_param) + encryptables.find_by(tag: tag_param) end def tag_param @@ -38,15 +38,15 @@ def limit def filter_by_recent logs = PaperTrail::Version.where(whodunnit: @current_user.id) logs = logs.sort { |a, b| b.created_at <=> a.created_at } - - credentialIds = [] - for log in logs do - credentialIds.push(log.item_id) + + credential_ids = [] + logs.each do |log| + credential_ids.push(log.item_id) end - - recentCredentialIds = credentialIds.uniq.first(limit.to_i) - - recentCredentials = @current_user.encryptables.find(recentCredentialIds) + + recent_credential_ids = credential_ids.uniq.first(limit.to_i) + + @current_user.encryptables.find(recent_credential_ids) end end end diff --git a/spec/system/dashboard_system_spec.rb b/spec/system/dashboard_system_spec.rb index 2c56bb2d4..2a013dc5d 100644 --- a/spec/system/dashboard_system_spec.rb +++ b/spec/system/dashboard_system_spec.rb @@ -35,7 +35,7 @@ expect(page.current_path).to eq("/teams/#{team.id}") expect(page).to have_selector 'div.content' end - + it 'navigates to encryptable on encryptable card click' do login_as_user(:alice) From 7caaecb588c540bad3277e9980994e1029265f47 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Mon, 2 May 2022 01:42:50 +0200 Subject: [PATCH 48/82] Adds versions and corresponding encryptable fixtures to test database. Fixes specs --- .../api/encryptables_controller.rb | 10 ++- app/presenters/encryptables/filtered_list.rb | 9 --- spec/fixtures/encryptables.yml | 35 +++++++++++ spec/fixtures/versions.yml | 62 +++++++++++++++++++ spec/system/dashboard_system_spec.rb | 6 +- 5 files changed, 109 insertions(+), 13 deletions(-) create mode 100644 spec/fixtures/versions.yml diff --git a/app/controllers/api/encryptables_controller.rb b/app/controllers/api/encryptables_controller.rb index a9c30ad77..01db359c9 100644 --- a/app/controllers/api/encryptables_controller.rb +++ b/app/controllers/api/encryptables_controller.rb @@ -71,7 +71,11 @@ def model_class end def fetch_entries - Encryptables::FilteredList.new(current_user, params).fetch_entries + encryptables = Encryptables::FilteredList.new(current_user, params).fetch_entries + if tag_param.present? + encryptables = encryptables.find_by(tag: tag_param) + end + encryptables end def encrypt(encryptable) @@ -97,6 +101,10 @@ def query_param params[:q] end + def tag_param + params[:tag] + end + def encryptable_move_handler EncryptableMoveHandler.new(encryptable, session[:private_key], current_user) end diff --git a/app/presenters/encryptables/filtered_list.rb b/app/presenters/encryptables/filtered_list.rb index 0dd7aaa4c..d10398c9e 100644 --- a/app/presenters/encryptables/filtered_list.rb +++ b/app/presenters/encryptables/filtered_list.rb @@ -7,21 +7,12 @@ def fetch_entries filtered_encryptables = encryptables filtered_encryptables = filter_by_recent if recent.present? && true?(recent) - filtered_encryptables = filter_by_tag_params if tag_param.present? filtered_encryptables end private - def filter_by_tag_params - encryptables.find_by(tag: tag_param) - end - - def tag_param - @params[:tag] - end - def recent @params[:recent] end diff --git a/spec/fixtures/encryptables.yml b/spec/fixtures/encryptables.yml index 4ff6c8679..f75c8cd24 100644 --- a/spec/fixtures/encryptables.yml +++ b/spec/fixtures/encryptables.yml @@ -38,3 +38,38 @@ osesecret1: name: postgresql-token folder: folder1 encrypted_data: '{"ose_secret":{"iv":null, "data":"CGRwhrTh0tj+Aglr5ztEX+cRm+vjlmm5qMVyQMJs4GnbhAj41WgzNEgCmSsu/Id7coQ1F44+TYJRcCH4ypAQ5vIYQbRqf1Iyeo4a1/s6x7a8NAcGk3x1VC1YxBFeNxlJs0d1nxC39gY3BsYnk5DNfkVv1BswQRwE9Y7KWzusP2sKQleLgdfKIDOLloCiGyod"}}' + +credentials3: + type: Encryptable::Credentials + name: Recent 1 + description: Recent 1 + folder: folder3 + encrypted_data: '{"password":{"iv":null,"data":"pulO7xz5jDwUVQzbOqJzIw=="},"username":{"iv":null,"data":"0CkUu2Bd9eNB4OCuXVC3TA=="}}' + +credentials4: + type: Encryptable::Credentials + name: Recent 2 + description: Recent 2 + folder: folder3 + encrypted_data: '{"password":{"iv":null,"data":"pulO7xz5jDwUVQzbOqJzIw=="},"username":{"iv":null,"data":"0CkUu2Bd9eNB4OCuXVC3TA=="}}' + +credentials5: + type: Encryptable::Credentials + name: Recent 3 + description: Recent 3 + folder: folder3 + encrypted_data: '{"password":{"iv":null,"data":"pulO7xz5jDwUVQzbOqJzIw=="},"username":{"iv":null,"data":"0CkUu2Bd9eNB4OCuXVC3TA=="}}' + +credentials6: + type: Encryptable::Credentials + name: Recent 4 + description: Recent 4 + folder: folder3 + encrypted_data: '{"password":{"iv":null,"data":"pulO7xz5jDwUVQzbOqJzIw=="},"username":{"iv":null,"data":"0CkUu2Bd9eNB4OCuXVC3TA=="}}' + +credentials7: + type: Encryptable::Credentials + name: Recent 5 + description: Recent 5 + folder: folder3 + encrypted_data: '{"password":{"iv":null,"data":"pulO7xz5jDwUVQzbOqJzIw=="},"username":{"iv":null,"data":"0CkUu2Bd9eNB4OCuXVC3TA=="}}' diff --git a/spec/fixtures/versions.yml b/spec/fixtures/versions.yml new file mode 100644 index 000000000..a87f454b5 --- /dev/null +++ b/spec/fixtures/versions.yml @@ -0,0 +1,62 @@ +# == Schema Information +# +# Table name: versions +# +# id :integer not null, primary key +# item_type :string +# item_id :integer +# event :string +# whodunnit :string +# object :text +# created_at :datetime + +# Copyright (c) 2008-2017, Puzzle ITC GmbH. This file is part of +# Cryptopus and licensed under the Affero General Public License version 3 or later. +# See the COPYING file at the top-level directory or at +# https://github.com/puzzle/cryptopus. + +version1: + id: 1 + item_type: Encryptable + item_id: 177252022 + event: viewed + whodunnit: 663665735 + object: encryptable + created_at: 2022-04-29 09:10:08.311155 + +version2: + id: 2 + item_type: Encryptable + item_id: 351548183 + event: viewed + whodunnit: 663665735 + object: encryptable + created_at: 2022-04-28 09:10:08.311155 + +version3: + id: 3 + item_type: Encryptable + item_id: 603128706 + event: viewed + whodunnit: 663665735 + object: encryptable + created_at: 2022-03-25 09:10:08.311155 + +version4: + id: 4 + item_type: Encryptable + item_id: 989483582 + event: viewed + whodunnit: 663665735 + object: encryptable + created_at: 2022-02-15 09:10:08.311155 + +version5: + id: 5 + item_type: Encryptable + item_id: 234709679 + event: viewed + whodunnit: 663665735 + object: encryptable + created_at: 2022-04-13 09:10:08.311155 + diff --git a/spec/system/dashboard_system_spec.rb b/spec/system/dashboard_system_spec.rb index 2a013dc5d..13161370a 100644 --- a/spec/system/dashboard_system_spec.rb +++ b/spec/system/dashboard_system_spec.rb @@ -1,10 +1,10 @@ # frozen_string_literal: true require 'spec_helper' +require 'pry' describe 'Dashboard', type: :system, js: true do include SystemHelpers - it 'renders dashboard grid' do login_as_user(:alice) @@ -17,8 +17,8 @@ expect(page).to have_text('Teams', count: 1) expect(page).not_to have_selector 'div.content' - - expect(page).to have_selector('div.dashboard-grid-card', count: 3) + expect(page).to have_selector('div.primary-content', count: 3) + expect(page).to have_selector('div.dashboard-grid-card', count: 7) end it 'navigates to team on team card click' do From 37776870e51088b3c4bfaa07fea7eb9f27ca9ed5 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Mon, 2 May 2022 11:40:54 +0200 Subject: [PATCH 49/82] Adds system/controller specs for recent Credentials --- .../api/encryptables_controller_spec.rb | 17 ++++++++++++++++- spec/fixtures/encryptables.yml | 10 +++++----- spec/fixtures/versions.yml | 2 +- spec/system/dashboard_system_spec.rb | 13 ++++++++++--- 4 files changed, 32 insertions(+), 10 deletions(-) diff --git a/spec/controllers/api/encryptables_controller_spec.rb b/spec/controllers/api/encryptables_controller_spec.rb index 2e7adfb3a..e38b632ef 100644 --- a/spec/controllers/api/encryptables_controller_spec.rb +++ b/spec/controllers/api/encryptables_controller_spec.rb @@ -13,12 +13,13 @@ let(:attributes) { %w[name cleartext_password cleartext_username] } let!(:ose_secret) { create_ose_secret } let(:credentials1) { encryptables(:credentials1) } + let(:credentials2) { encryptables(:recentCredentials1) } context 'GET index' do it 'returns encryptable with matching name' do login_as(:alice) - get :index, params: { 'q': 'Personal' }, xhr: true + get :index, params: { 'q': 'Mailbox' }, xhr: true credentials1_json = data.second credentials1_json_attributes = credentials1_json['attributes'] @@ -98,6 +99,20 @@ expect_json_object_includes_keys(credentials2_json_attributes, attributes) expect_json_object_includes_keys(credentials2_json_relationships, nested_models) end + + it 'returns alices favourite teams' do + login_as(:alice) + + get :index, params: { recent: true }, xhr: true + + expect(response.status).to be(200) + + expect(data.size).to be(5) + attributes = data.first['attributes'] + + expect(attributes['name']).to eq recentCredentials1.name + expect(attributes['description']).to eq recentCredentials1.description + end end context 'GET show' do diff --git a/spec/fixtures/encryptables.yml b/spec/fixtures/encryptables.yml index f75c8cd24..5b9f2851b 100644 --- a/spec/fixtures/encryptables.yml +++ b/spec/fixtures/encryptables.yml @@ -39,35 +39,35 @@ osesecret1: folder: folder1 encrypted_data: '{"ose_secret":{"iv":null, "data":"CGRwhrTh0tj+Aglr5ztEX+cRm+vjlmm5qMVyQMJs4GnbhAj41WgzNEgCmSsu/Id7coQ1F44+TYJRcCH4ypAQ5vIYQbRqf1Iyeo4a1/s6x7a8NAcGk3x1VC1YxBFeNxlJs0d1nxC39gY3BsYnk5DNfkVv1BswQRwE9Y7KWzusP2sKQleLgdfKIDOLloCiGyod"}}' -credentials3: +recentCredentials1: type: Encryptable::Credentials name: Recent 1 description: Recent 1 folder: folder3 encrypted_data: '{"password":{"iv":null,"data":"pulO7xz5jDwUVQzbOqJzIw=="},"username":{"iv":null,"data":"0CkUu2Bd9eNB4OCuXVC3TA=="}}' -credentials4: +recentCredentials2: type: Encryptable::Credentials name: Recent 2 description: Recent 2 folder: folder3 encrypted_data: '{"password":{"iv":null,"data":"pulO7xz5jDwUVQzbOqJzIw=="},"username":{"iv":null,"data":"0CkUu2Bd9eNB4OCuXVC3TA=="}}' -credentials5: +recentCredentials3: type: Encryptable::Credentials name: Recent 3 description: Recent 3 folder: folder3 encrypted_data: '{"password":{"iv":null,"data":"pulO7xz5jDwUVQzbOqJzIw=="},"username":{"iv":null,"data":"0CkUu2Bd9eNB4OCuXVC3TA=="}}' -credentials6: +recentCredentials4: type: Encryptable::Credentials name: Recent 4 description: Recent 4 folder: folder3 encrypted_data: '{"password":{"iv":null,"data":"pulO7xz5jDwUVQzbOqJzIw=="},"username":{"iv":null,"data":"0CkUu2Bd9eNB4OCuXVC3TA=="}}' -credentials7: +recentCredentials5: type: Encryptable::Credentials name: Recent 5 description: Recent 5 diff --git a/spec/fixtures/versions.yml b/spec/fixtures/versions.yml index a87f454b5..9984df2b4 100644 --- a/spec/fixtures/versions.yml +++ b/spec/fixtures/versions.yml @@ -58,5 +58,5 @@ version5: event: viewed whodunnit: 663665735 object: encryptable - created_at: 2022-04-13 09:10:08.311155 + created_at: 2022-01-13 09:10:08.311155 diff --git a/spec/system/dashboard_system_spec.rb b/spec/system/dashboard_system_spec.rb index 13161370a..f2000fa89 100644 --- a/spec/system/dashboard_system_spec.rb +++ b/spec/system/dashboard_system_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'spec_helper' -require 'pry' describe 'Dashboard', type: :system, js: true do include SystemHelpers @@ -15,7 +14,6 @@ expect(page).to have_text('Recent Credentials', count: 1) expect(page).to have_text('Favourites', count: 1) expect(page).to have_text('Teams', count: 1) - expect(page).not_to have_selector 'div.content' expect(page).to have_selector('div.primary-content', count: 3) expect(page).to have_selector('div.dashboard-grid-card', count: 7) @@ -43,11 +41,20 @@ expect(page).to have_selector('pzsh-hero', visible: true) - encryptable = Encryptable.first + encryptable = Encryptable.find_by(name: 'Recent 1') first('div.dashboard-grid-card', text: encryptable.name).click expect(page.current_path).to eq("/encryptables/#{encryptable.id}") expect(page).to have_selector 'div.content' end + + it 'shows visited encryptable first in list' do + login_as_user(:alice) + + encryptable = Encryptable.find_by(name: 'Recent 5') + visit("/encryptables/#{encryptable.id}") + visit("/dashboard") + expect(first('div.dashboard-grid-card')).to have_text('Recent 5') + end end From f06067995593b5dec60b6f1244c2765e9d761537 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Mon, 2 May 2022 12:07:54 +0200 Subject: [PATCH 50/82] starts implementing filter_by_query functionality for encryptables --- app/presenters/encryptables/filtered_list.rb | 17 +++++++++++++++++ .../api/encryptables_controller_spec.rb | 3 ++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/app/presenters/encryptables/filtered_list.rb b/app/presenters/encryptables/filtered_list.rb index d10398c9e..6ae94fd01 100644 --- a/app/presenters/encryptables/filtered_list.rb +++ b/app/presenters/encryptables/filtered_list.rb @@ -7,12 +7,22 @@ def fetch_entries filtered_encryptables = encryptables filtered_encryptables = filter_by_recent if recent.present? && true?(recent) + filtered_encryptables = filter_by_query(filtered_encryptables) if query_present? + filtered_encryptables end private + def query + @params[:q].strip.downcase + end + + def query_present? + @params[:q].present? + end + def recent @params[:recent] end @@ -26,6 +36,13 @@ def limit @params[:limit] end + def filter_by_query(encryptables) + encryptables.where( + 'lower(encryptables.description) LIKE :query + OR lower(encryptables.name) LIKE :query', + query: "%#{query}%") + end + def filter_by_recent logs = PaperTrail::Version.where(whodunnit: @current_user.id) logs = logs.sort { |a, b| b.created_at <=> a.created_at } diff --git a/spec/controllers/api/encryptables_controller_spec.rb b/spec/controllers/api/encryptables_controller_spec.rb index e38b632ef..b3ae23455 100644 --- a/spec/controllers/api/encryptables_controller_spec.rb +++ b/spec/controllers/api/encryptables_controller_spec.rb @@ -19,8 +19,9 @@ it 'returns encryptable with matching name' do login_as(:alice) - get :index, params: { 'q': 'Mailbox' }, xhr: true + get :index, params: { 'q': 'Personal' }, xhr: true + expect(data.count).to eq 1 credentials1_json = data.second credentials1_json_attributes = credentials1_json['attributes'] credentials1_json_relationships = credentials1_json['relationships'] From 12626ba5fa8c5aa4d062d16461a4fe6a70c499a7 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Mon, 2 May 2022 12:37:24 +0200 Subject: [PATCH 51/82] completes filter_by_query functionality and specs for encryptables --- app/presenters/encryptables/filtered_list.rb | 2 +- spec/controllers/api/encryptables_controller_spec.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/presenters/encryptables/filtered_list.rb b/app/presenters/encryptables/filtered_list.rb index 6ae94fd01..cf395fc22 100644 --- a/app/presenters/encryptables/filtered_list.rb +++ b/app/presenters/encryptables/filtered_list.rb @@ -36,7 +36,7 @@ def limit @params[:limit] end - def filter_by_query(encryptables) + def filter_by_query(teams) encryptables.where( 'lower(encryptables.description) LIKE :query OR lower(encryptables.name) LIKE :query', diff --git a/spec/controllers/api/encryptables_controller_spec.rb b/spec/controllers/api/encryptables_controller_spec.rb index b3ae23455..c6504eef6 100644 --- a/spec/controllers/api/encryptables_controller_spec.rb +++ b/spec/controllers/api/encryptables_controller_spec.rb @@ -22,7 +22,7 @@ get :index, params: { 'q': 'Personal' }, xhr: true expect(data.count).to eq 1 - credentials1_json = data.second + credentials1_json = data.first credentials1_json_attributes = credentials1_json['attributes'] credentials1_json_relationships = credentials1_json['relationships'] From 92f2ca392f5e80621530c5ffb713057f5526440e Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Mon, 2 May 2022 14:16:53 +0200 Subject: [PATCH 52/82] fixes specs and fixtures --- .../api/encryptables_controller_spec.rb | 15 ++++++++------- spec/fixtures/versions.yml | 10 +++++----- spec/system/dashboard_system_spec.rb | 1 - 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/spec/controllers/api/encryptables_controller_spec.rb b/spec/controllers/api/encryptables_controller_spec.rb index c6504eef6..ad38e0d0e 100644 --- a/spec/controllers/api/encryptables_controller_spec.rb +++ b/spec/controllers/api/encryptables_controller_spec.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true require 'spec_helper' +require 'pry' describe Api::EncryptablesController do include ControllerHelpers @@ -38,16 +39,16 @@ expect_json_object_includes_keys(credentials1_json_relationships, nested_models) end - it 'returns all enncryptables if empty query param given' do + it 'returns all encryptables if empty query param given' do login_as(:alice) get :index, params: { 'q': '' }, xhr: true - credentials1_json = data.second + credentials1_json = data.fourth credentials1_json_attributes = credentials1_json['attributes'] credentials1_json_relationships = credentials1_json['relationships'] - expect(data.count).to eq 3 + expect(data.count).to eq 8 expect(credentials1_json_attributes['name']).to eq credentials1.name expect(credentials1_json['id']).to eq credentials1.id.to_s expect(credentials1_json_attributes['cleartext_username']).to be_nil @@ -64,11 +65,11 @@ get :index, xhr: true - credentials1_json = data.second + credentials1_json = data.fourth credentials1_json_attributes = credentials1_json['attributes'] credentials1_json_relationships = credentials1_json['relationships'] - expect(data.count).to eq 3 + expect(data.count).to eq 8 expect(credentials1_json_attributes['name']).to eq credentials1.name expect(credentials1_json['id']).to eq credentials1.id.to_s expect(credentials1_json_attributes['cleartext_username']).to be_nil @@ -101,14 +102,14 @@ expect_json_object_includes_keys(credentials2_json_relationships, nested_models) end - it 'returns alices favourite teams' do + it 'returns alices recent encryptables' do login_as(:alice) get :index, params: { recent: true }, xhr: true expect(response.status).to be(200) - expect(data.size).to be(5) + expect(data.size).to eq(5) attributes = data.first['attributes'] expect(attributes['name']).to eq recentCredentials1.name diff --git a/spec/fixtures/versions.yml b/spec/fixtures/versions.yml index 9984df2b4..02458afbd 100644 --- a/spec/fixtures/versions.yml +++ b/spec/fixtures/versions.yml @@ -18,7 +18,7 @@ version1: id: 1 item_type: Encryptable - item_id: 177252022 + item_id: 934109102 event: viewed whodunnit: 663665735 object: encryptable @@ -27,7 +27,7 @@ version1: version2: id: 2 item_type: Encryptable - item_id: 351548183 + item_id: 782503450 event: viewed whodunnit: 663665735 object: encryptable @@ -36,7 +36,7 @@ version2: version3: id: 3 item_type: Encryptable - item_id: 603128706 + item_id: 430128771 event: viewed whodunnit: 663665735 object: encryptable @@ -45,7 +45,7 @@ version3: version4: id: 4 item_type: Encryptable - item_id: 989483582 + item_id: 130525986 event: viewed whodunnit: 663665735 object: encryptable @@ -54,7 +54,7 @@ version4: version5: id: 5 item_type: Encryptable - item_id: 234709679 + item_id: 817929141 event: viewed whodunnit: 663665735 object: encryptable diff --git a/spec/system/dashboard_system_spec.rb b/spec/system/dashboard_system_spec.rb index f2000fa89..79159d5fb 100644 --- a/spec/system/dashboard_system_spec.rb +++ b/spec/system/dashboard_system_spec.rb @@ -8,7 +8,6 @@ login_as_user(:alice) expect(page.current_path).to eq('/dashboard') - expect(page).to have_selector('pzsh-hero', visible: true) expect(page).to have_selector('pzsh-banner', visible: true) expect(page).to have_text('Recent Credentials', count: 1) From 7894fb755ef37a823624ba0a12910c5fcf94a551 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Mon, 2 May 2022 15:46:30 +0200 Subject: [PATCH 53/82] Recent credential requests now only return valid encryptables --- app/presenters/encryptables/filtered_list.rb | 32 +++++++++++++++----- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/app/presenters/encryptables/filtered_list.rb b/app/presenters/encryptables/filtered_list.rb index cf395fc22..7835dec60 100644 --- a/app/presenters/encryptables/filtered_list.rb +++ b/app/presenters/encryptables/filtered_list.rb @@ -44,17 +44,35 @@ def filter_by_query(teams) end def filter_by_recent - logs = PaperTrail::Version.where(whodunnit: @current_user.id) - logs = logs.sort { |a, b| b.created_at <=> a.created_at } + fetch_logs + read_credential_ids + fetch_recent_credentials + end + + def fetch_logs + @logs = PaperTrail::Version.where(whodunnit: @current_user.id) + @logs = @logs.sort { |a, b| b.created_at <=> a.created_at } + end + def read_credential_ids credential_ids = [] - logs.each do |log| + @logs.each do |log| credential_ids.push(log.item_id) end + @recent_credential_ids = credential_ids.uniq + end - recent_credential_ids = credential_ids.uniq.first(limit.to_i) - - @current_user.encryptables.find(recent_credential_ids) + def fetch_recent_credentials + recent_credentials = [] + @recent_credential_ids.each do |id| + entry = @current_user.encryptables.find(id) + if entry + recent_credentials.push(entry) + end + break if recent_credentials.size >= limit.to_i + end + recent_credentials end + end -end +end \ No newline at end of file From 86f8ca5f4542d293a721dc690afaf6e994674d28 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Mon, 2 May 2022 16:17:21 +0200 Subject: [PATCH 54/82] fixes encryptables_controller_system_spec.rb --- spec/controllers/api/encryptables_controller_spec.rb | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/spec/controllers/api/encryptables_controller_spec.rb b/spec/controllers/api/encryptables_controller_spec.rb index ad38e0d0e..46e20ebc7 100644 --- a/spec/controllers/api/encryptables_controller_spec.rb +++ b/spec/controllers/api/encryptables_controller_spec.rb @@ -104,16 +104,17 @@ it 'returns alices recent encryptables' do login_as(:alice) + limit = 5 - get :index, params: { recent: true }, xhr: true + get :index, params: { recent: true , limit: 5 }, xhr: true expect(response.status).to be(200) - + expect(data.size).to eq(5) attributes = data.first['attributes'] - - expect(attributes['name']).to eq recentCredentials1.name - expect(attributes['description']).to eq recentCredentials1.description + expect(attributes['name']).to eq credentials2.name + expect(attributes['description']).to eq credentials2.description + binding.pry end end From a0b198cf4b2c80bf4271c7c2f831bb239e6c5759 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Mon, 2 May 2022 17:02:02 +0200 Subject: [PATCH 55/82] Fixes specs --- app/presenters/encryptables/filtered_list.rb | 21 ++++++++++--------- .../api/encryptables_controller_spec.rb | 8 +++---- spec/controllers/api/teams_controller_spec.rb | 4 ++-- spec/models/encryptable_spec.rb | 4 +++- spec/models/user/human_spec.rb | 4 ++-- spec/system/dashboard_system_spec.rb | 2 +- 6 files changed, 22 insertions(+), 21 deletions(-) diff --git a/app/presenters/encryptables/filtered_list.rb b/app/presenters/encryptables/filtered_list.rb index 7835dec60..633f75d49 100644 --- a/app/presenters/encryptables/filtered_list.rb +++ b/app/presenters/encryptables/filtered_list.rb @@ -36,11 +36,12 @@ def limit @params[:limit] end - def filter_by_query(teams) + def filter_by_query(encryptables) encryptables.where( 'lower(encryptables.description) LIKE :query OR lower(encryptables.name) LIKE :query', - query: "%#{query}%") + query: "%#{query}%" + ) end def filter_by_recent @@ -64,15 +65,15 @@ def read_credential_ids def fetch_recent_credentials recent_credentials = [] - @recent_credential_ids.each do |id| - entry = @current_user.encryptables.find(id) - if entry - recent_credentials.push(entry) - end - break if recent_credentials.size >= limit.to_i + @recent_credential_ids.each do |id| + entry = @current_user.encryptables.find(id) + if entry + recent_credentials.push(entry) end + break if recent_credentials.size >= limit.to_i + end recent_credentials end - + end -end \ No newline at end of file +end diff --git a/spec/controllers/api/encryptables_controller_spec.rb b/spec/controllers/api/encryptables_controller_spec.rb index 46e20ebc7..0c634e639 100644 --- a/spec/controllers/api/encryptables_controller_spec.rb +++ b/spec/controllers/api/encryptables_controller_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'spec_helper' -require 'pry' describe Api::EncryptablesController do include ControllerHelpers @@ -106,15 +105,14 @@ login_as(:alice) limit = 5 - get :index, params: { recent: true , limit: 5 }, xhr: true + get :index, params: { recent: true, limit: limit }, xhr: true expect(response.status).to be(200) - - expect(data.size).to eq(5) + + expect(data.size).to eq(limit) attributes = data.first['attributes'] expect(attributes['name']).to eq credentials2.name expect(attributes['description']).to eq credentials2.description - binding.pry end end diff --git a/spec/controllers/api/teams_controller_spec.rb b/spec/controllers/api/teams_controller_spec.rb index 6adb84de3..4a896d93b 100644 --- a/spec/controllers/api/teams_controller_spec.rb +++ b/spec/controllers/api/teams_controller_spec.rb @@ -82,7 +82,7 @@ folder_relationships_length = data.first['relationships']['folders']['data'].size - expect(included.size).to be(5) + expect(included.size).to be(10) expect(folder_relationships_length).to be(3) end @@ -106,7 +106,7 @@ folder_relationships_length = data.first['relationships']['folders']['data'].size - expect(included.size).to be(5) + expect(included.size).to be(10) expect(folder_relationships_length).to be(3) end diff --git a/spec/models/encryptable_spec.rb b/spec/models/encryptable_spec.rb index 9ef0f5d90..cdb1ac644 100644 --- a/spec/models/encryptable_spec.rb +++ b/spec/models/encryptable_spec.rb @@ -86,15 +86,17 @@ context 'papertrail', versioning: true do context 'delete' do it 'deletes log history if encryptable is delted' do + 1000.times do encryptable.touch end expect(encryptable.versions.size).to eq(1000) + size = PaperTrail::Version.all.size encryptable.destroy - expect(PaperTrail::Version.all.size).to be(0) + expect(PaperTrail::Version.all.size).to be(size - 1000) end end diff --git a/spec/models/user/human_spec.rb b/spec/models/user/human_spec.rb index ec8918f0b..5be3ab42c 100644 --- a/spec/models/user/human_spec.rb +++ b/spec/models/user/human_spec.rb @@ -68,8 +68,8 @@ context 'encryptables' do it 'only returns encryptables where alice is member' do encryptables = alice.encryptables - expect(encryptables.count).to eq(2) - expect(encryptables.second.name).to eq('Personal Mailbox') + expect(encryptables.count).to eq(7) + expect(encryptables.fourth.name).to eq('Personal Mailbox') end end diff --git a/spec/system/dashboard_system_spec.rb b/spec/system/dashboard_system_spec.rb index 79159d5fb..d7d057c9f 100644 --- a/spec/system/dashboard_system_spec.rb +++ b/spec/system/dashboard_system_spec.rb @@ -53,7 +53,7 @@ encryptable = Encryptable.find_by(name: 'Recent 5') visit("/encryptables/#{encryptable.id}") - visit("/dashboard") + visit('/dashboard') expect(first('div.dashboard-grid-card')).to have_text('Recent 5') end end From 1a64beaf0a9b14d9cf9bf8c0cda3567ea6239b8b Mon Sep 17 00:00:00 2001 From: Robin Steiner Date: Mon, 2 May 2022 17:54:59 +0200 Subject: [PATCH 56/82] Cleanup recent credentials fetching --- app/presenters/encryptables/filtered_list.rb | 36 ++++---------------- 1 file changed, 7 insertions(+), 29 deletions(-) diff --git a/app/presenters/encryptables/filtered_list.rb b/app/presenters/encryptables/filtered_list.rb index 7835dec60..056602014 100644 --- a/app/presenters/encryptables/filtered_list.rb +++ b/app/presenters/encryptables/filtered_list.rb @@ -44,35 +44,13 @@ def filter_by_query(teams) end def filter_by_recent - fetch_logs - read_credential_ids - fetch_recent_credentials + recent_versions = PaperTrail::Version + .where(whodunnit: @current_user) + .order(created_at: :desc) + .group(:item_id, :item_type) + .select(:item_id, :item_type) + .limit(limit) + .map(&:item) end - - def fetch_logs - @logs = PaperTrail::Version.where(whodunnit: @current_user.id) - @logs = @logs.sort { |a, b| b.created_at <=> a.created_at } - end - - def read_credential_ids - credential_ids = [] - @logs.each do |log| - credential_ids.push(log.item_id) - end - @recent_credential_ids = credential_ids.uniq - end - - def fetch_recent_credentials - recent_credentials = [] - @recent_credential_ids.each do |id| - entry = @current_user.encryptables.find(id) - if entry - recent_credentials.push(entry) - end - break if recent_credentials.size >= limit.to_i - end - recent_credentials - end - end end \ No newline at end of file From 3cca724a37d1f3ab8387ff3806f48c15e68177fa Mon Sep 17 00:00:00 2001 From: Robin Steiner Date: Tue, 3 May 2022 07:58:11 +0200 Subject: [PATCH 57/82] Fix rubocop complaint --- app/presenters/encryptables/filtered_list.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/presenters/encryptables/filtered_list.rb b/app/presenters/encryptables/filtered_list.rb index df33c44fe..d6277a4e6 100644 --- a/app/presenters/encryptables/filtered_list.rb +++ b/app/presenters/encryptables/filtered_list.rb @@ -45,7 +45,7 @@ def filter_by_query(encryptables) end def filter_by_recent - recent_versions = PaperTrail::Version + PaperTrail::Version .where(whodunnit: @current_user) .order(created_at: :desc) .group(:item_id, :item_type) From 328d4beacecdd6711a0bba4fa1f54670945147bc Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Thu, 5 May 2022 15:45:37 +0200 Subject: [PATCH 58/82] Changes the handling of request parameters --- app/presenters/encryptables/filtered_list.rb | 17 ++++------------- frontend/app/routes/dashboard.js | 1 - 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/app/presenters/encryptables/filtered_list.rb b/app/presenters/encryptables/filtered_list.rb index d6277a4e6..d6f7815ea 100644 --- a/app/presenters/encryptables/filtered_list.rb +++ b/app/presenters/encryptables/filtered_list.rb @@ -6,8 +6,8 @@ class FilteredList < ::FilteredList def fetch_entries filtered_encryptables = encryptables - filtered_encryptables = filter_by_recent if recent.present? && true?(recent) - filtered_encryptables = filter_by_query(filtered_encryptables) if query_present? + filtered_encryptables = filter_by_recent if recent + filtered_encryptables = filter_by_query(filtered_encryptables) if query filtered_encryptables @@ -16,11 +16,7 @@ def fetch_entries private def query - @params[:q].strip.downcase - end - - def query_present? - @params[:q].present? + @params[:q]&.strip&.downcase end def recent @@ -29,11 +25,6 @@ def recent def encryptables @current_user.encryptables - .limit(limit) - end - - def limit - @params[:limit] end def filter_by_query(encryptables) @@ -50,7 +41,7 @@ def filter_by_recent .order(created_at: :desc) .group(:item_id, :item_type) .select(:item_id, :item_type) - .limit(limit) + .limit(5) .map(&:item) end end diff --git a/frontend/app/routes/dashboard.js b/frontend/app/routes/dashboard.js index 90bd3d6a6..a09592dba 100644 --- a/frontend/app/routes/dashboard.js +++ b/frontend/app/routes/dashboard.js @@ -36,7 +36,6 @@ export default class DashboardRoute extends BaseRoute { } async getRecentCredentials(params) { - params["limit"] = 5; params["recent"] = true; return await this.store.query("encryptable", params); } From e55127a29bbe1697caf3978111c71dc0f189faa2 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Thu, 5 May 2022 15:59:23 +0200 Subject: [PATCH 59/82] Removes some fixtures and fixes related specs --- .../api/encryptables_controller_spec.rb | 11 ++-- spec/controllers/api/teams_controller_spec.rb | 4 +- spec/fixtures/encryptables.yml | 35 ----------- spec/fixtures/versions.yml | 62 ------------------- spec/models/user/human_spec.rb | 4 +- 5 files changed, 9 insertions(+), 107 deletions(-) delete mode 100644 spec/fixtures/versions.yml diff --git a/spec/controllers/api/encryptables_controller_spec.rb b/spec/controllers/api/encryptables_controller_spec.rb index 0c634e639..683a78304 100644 --- a/spec/controllers/api/encryptables_controller_spec.rb +++ b/spec/controllers/api/encryptables_controller_spec.rb @@ -43,11 +43,11 @@ get :index, params: { 'q': '' }, xhr: true - credentials1_json = data.fourth + credentials1_json = data.second credentials1_json_attributes = credentials1_json['attributes'] credentials1_json_relationships = credentials1_json['relationships'] - expect(data.count).to eq 8 + expect(data.count).to eq 3 expect(credentials1_json_attributes['name']).to eq credentials1.name expect(credentials1_json['id']).to eq credentials1.id.to_s expect(credentials1_json_attributes['cleartext_username']).to be_nil @@ -64,11 +64,11 @@ get :index, xhr: true - credentials1_json = data.fourth + credentials1_json = data.second credentials1_json_attributes = credentials1_json['attributes'] credentials1_json_relationships = credentials1_json['relationships'] - expect(data.count).to eq 8 + expect(data.count).to eq 3 expect(credentials1_json_attributes['name']).to eq credentials1.name expect(credentials1_json['id']).to eq credentials1.id.to_s expect(credentials1_json_attributes['cleartext_username']).to be_nil @@ -103,9 +103,8 @@ it 'returns alices recent encryptables' do login_as(:alice) - limit = 5 - get :index, params: { recent: true, limit: limit }, xhr: true + get :index, params: { recent: true }, xhr: true expect(response.status).to be(200) diff --git a/spec/controllers/api/teams_controller_spec.rb b/spec/controllers/api/teams_controller_spec.rb index 4a896d93b..6adb84de3 100644 --- a/spec/controllers/api/teams_controller_spec.rb +++ b/spec/controllers/api/teams_controller_spec.rb @@ -82,7 +82,7 @@ folder_relationships_length = data.first['relationships']['folders']['data'].size - expect(included.size).to be(10) + expect(included.size).to be(5) expect(folder_relationships_length).to be(3) end @@ -106,7 +106,7 @@ folder_relationships_length = data.first['relationships']['folders']['data'].size - expect(included.size).to be(10) + expect(included.size).to be(5) expect(folder_relationships_length).to be(3) end diff --git a/spec/fixtures/encryptables.yml b/spec/fixtures/encryptables.yml index 5b9f2851b..4ff6c8679 100644 --- a/spec/fixtures/encryptables.yml +++ b/spec/fixtures/encryptables.yml @@ -38,38 +38,3 @@ osesecret1: name: postgresql-token folder: folder1 encrypted_data: '{"ose_secret":{"iv":null, "data":"CGRwhrTh0tj+Aglr5ztEX+cRm+vjlmm5qMVyQMJs4GnbhAj41WgzNEgCmSsu/Id7coQ1F44+TYJRcCH4ypAQ5vIYQbRqf1Iyeo4a1/s6x7a8NAcGk3x1VC1YxBFeNxlJs0d1nxC39gY3BsYnk5DNfkVv1BswQRwE9Y7KWzusP2sKQleLgdfKIDOLloCiGyod"}}' - -recentCredentials1: - type: Encryptable::Credentials - name: Recent 1 - description: Recent 1 - folder: folder3 - encrypted_data: '{"password":{"iv":null,"data":"pulO7xz5jDwUVQzbOqJzIw=="},"username":{"iv":null,"data":"0CkUu2Bd9eNB4OCuXVC3TA=="}}' - -recentCredentials2: - type: Encryptable::Credentials - name: Recent 2 - description: Recent 2 - folder: folder3 - encrypted_data: '{"password":{"iv":null,"data":"pulO7xz5jDwUVQzbOqJzIw=="},"username":{"iv":null,"data":"0CkUu2Bd9eNB4OCuXVC3TA=="}}' - -recentCredentials3: - type: Encryptable::Credentials - name: Recent 3 - description: Recent 3 - folder: folder3 - encrypted_data: '{"password":{"iv":null,"data":"pulO7xz5jDwUVQzbOqJzIw=="},"username":{"iv":null,"data":"0CkUu2Bd9eNB4OCuXVC3TA=="}}' - -recentCredentials4: - type: Encryptable::Credentials - name: Recent 4 - description: Recent 4 - folder: folder3 - encrypted_data: '{"password":{"iv":null,"data":"pulO7xz5jDwUVQzbOqJzIw=="},"username":{"iv":null,"data":"0CkUu2Bd9eNB4OCuXVC3TA=="}}' - -recentCredentials5: - type: Encryptable::Credentials - name: Recent 5 - description: Recent 5 - folder: folder3 - encrypted_data: '{"password":{"iv":null,"data":"pulO7xz5jDwUVQzbOqJzIw=="},"username":{"iv":null,"data":"0CkUu2Bd9eNB4OCuXVC3TA=="}}' diff --git a/spec/fixtures/versions.yml b/spec/fixtures/versions.yml deleted file mode 100644 index 02458afbd..000000000 --- a/spec/fixtures/versions.yml +++ /dev/null @@ -1,62 +0,0 @@ -# == Schema Information -# -# Table name: versions -# -# id :integer not null, primary key -# item_type :string -# item_id :integer -# event :string -# whodunnit :string -# object :text -# created_at :datetime - -# Copyright (c) 2008-2017, Puzzle ITC GmbH. This file is part of -# Cryptopus and licensed under the Affero General Public License version 3 or later. -# See the COPYING file at the top-level directory or at -# https://github.com/puzzle/cryptopus. - -version1: - id: 1 - item_type: Encryptable - item_id: 934109102 - event: viewed - whodunnit: 663665735 - object: encryptable - created_at: 2022-04-29 09:10:08.311155 - -version2: - id: 2 - item_type: Encryptable - item_id: 782503450 - event: viewed - whodunnit: 663665735 - object: encryptable - created_at: 2022-04-28 09:10:08.311155 - -version3: - id: 3 - item_type: Encryptable - item_id: 430128771 - event: viewed - whodunnit: 663665735 - object: encryptable - created_at: 2022-03-25 09:10:08.311155 - -version4: - id: 4 - item_type: Encryptable - item_id: 130525986 - event: viewed - whodunnit: 663665735 - object: encryptable - created_at: 2022-02-15 09:10:08.311155 - -version5: - id: 5 - item_type: Encryptable - item_id: 817929141 - event: viewed - whodunnit: 663665735 - object: encryptable - created_at: 2022-01-13 09:10:08.311155 - diff --git a/spec/models/user/human_spec.rb b/spec/models/user/human_spec.rb index 5be3ab42c..ec8918f0b 100644 --- a/spec/models/user/human_spec.rb +++ b/spec/models/user/human_spec.rb @@ -68,8 +68,8 @@ context 'encryptables' do it 'only returns encryptables where alice is member' do encryptables = alice.encryptables - expect(encryptables.count).to eq(7) - expect(encryptables.fourth.name).to eq('Personal Mailbox') + expect(encryptables.count).to eq(2) + expect(encryptables.second.name).to eq('Personal Mailbox') end end From ff8d3bf2672726a1041fb898518e14231daae41f Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Fri, 6 May 2022 11:29:30 +0200 Subject: [PATCH 60/82] fixes recent Credentials specs by creating encryptables/logs during testing --- .../api/encryptables_controller_spec.rb | 31 +++++++++++++------ 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/spec/controllers/api/encryptables_controller_spec.rb b/spec/controllers/api/encryptables_controller_spec.rb index 683a78304..99d59b42b 100644 --- a/spec/controllers/api/encryptables_controller_spec.rb +++ b/spec/controllers/api/encryptables_controller_spec.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true require 'spec_helper' +require 'pry' describe Api::EncryptablesController do include ControllerHelpers @@ -13,7 +14,7 @@ let(:attributes) { %w[name cleartext_password cleartext_username] } let!(:ose_secret) { create_ose_secret } let(:credentials1) { encryptables(:credentials1) } - let(:credentials2) { encryptables(:recentCredentials1) } + context 'GET index' do it 'returns encryptable with matching name' do @@ -101,17 +102,29 @@ expect_json_object_includes_keys(credentials2_json_relationships, nested_models) end - it 'returns alices recent encryptables' do - login_as(:alice) + context 'recent Credentials' do + + let!(:recentCredentials) { Fabricate.times(6, :credential, folder: teams(:team1).folders.first, team_password: Crypto::Symmetric::Aes256.random_key) } + + it 'returns alices recent cerdentials' do - get :index, params: { recent: true }, xhr: true + login_as(:alice) + + recentCredentials.each do |credential| + PaperTrail.request(whodunnit: alice.id) do + credential.touch + end + end - expect(response.status).to be(200) + get :index, params: { recent: true }, xhr: true - expect(data.size).to eq(limit) - attributes = data.first['attributes'] - expect(attributes['name']).to eq credentials2.name - expect(attributes['description']).to eq credentials2.description + expect(response.status).to be(200) + + expect(data.size).to eq(5) + attributes = data.first['attributes'] + expect(attributes['name']).to eq recentCredentials.last.name + expect(attributes['description']).to eq recentCredentials.last.description + end end end From 7e5a07ff21ab42aa9194c3846348e151cf245be8 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Fri, 6 May 2022 11:57:26 +0200 Subject: [PATCH 61/82] code cleanup --- spec/controllers/api/encryptables_controller_spec.rb | 12 +++++++++--- spec/models/encryptable_spec.rb | 3 +-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/spec/controllers/api/encryptables_controller_spec.rb b/spec/controllers/api/encryptables_controller_spec.rb index 99d59b42b..433cf2a9e 100644 --- a/spec/controllers/api/encryptables_controller_spec.rb +++ b/spec/controllers/api/encryptables_controller_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'spec_helper' -require 'pry' describe Api::EncryptablesController do include ControllerHelpers @@ -104,14 +103,21 @@ context 'recent Credentials' do - let!(:recentCredentials) { Fabricate.times(6, :credential, folder: teams(:team1).folders.first, team_password: Crypto::Symmetric::Aes256.random_key) } + let!(:recentCredentials) do + Fabricate.times( + 6, + :credential, + folder: teams(:team1).folders.first, + team_password: Crypto::Symmetric::Aes256.random_key + ) + end it 'returns alices recent cerdentials' do login_as(:alice) recentCredentials.each do |credential| - PaperTrail.request(whodunnit: alice.id) do + PaperTrail.request(whodunnit: alice.id) do credential.touch end end diff --git a/spec/models/encryptable_spec.rb b/spec/models/encryptable_spec.rb index cdb1ac644..0352b58d3 100644 --- a/spec/models/encryptable_spec.rb +++ b/spec/models/encryptable_spec.rb @@ -92,11 +92,10 @@ end expect(encryptable.versions.size).to eq(1000) - size = PaperTrail::Version.all.size encryptable.destroy - expect(PaperTrail::Version.all.size).to be(size - 1000) + expect(PaperTrail::Version.all.size).to be(0) end end From 5d8caeb2a444028b219bc380bfec41079d3e0cb6 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Tue, 10 May 2022 00:44:36 +0200 Subject: [PATCH 62/82] extends controller specs for recent credentials functionality --- .../api/encryptables_controller_spec.rb | 66 ++++++++++++++++++- .../encryptables/credentials_fabricator.rb | 2 +- 2 files changed, 64 insertions(+), 4 deletions(-) diff --git a/spec/controllers/api/encryptables_controller_spec.rb b/spec/controllers/api/encryptables_controller_spec.rb index 433cf2a9e..901b0de51 100644 --- a/spec/controllers/api/encryptables_controller_spec.rb +++ b/spec/controllers/api/encryptables_controller_spec.rb @@ -110,9 +110,9 @@ folder: teams(:team1).folders.first, team_password: Crypto::Symmetric::Aes256.random_key ) - end + end - it 'returns alices recent cerdentials' do + it 'returns most recent cerdentials' do login_as(:alice) @@ -125,12 +125,72 @@ get :index, params: { recent: true }, xhr: true expect(response.status).to be(200) - expect(data.size).to eq(5) attributes = data.first['attributes'] expect(attributes['name']).to eq recentCredentials.last.name expect(attributes['description']).to eq recentCredentials.last.description end + + it 'shows most recently used credential first in list' do + login_as(:alice) + + PaperTrail.request(whodunnit: alice.id) do + recentCredentials.each do |credential| + credential.touch + end + credentials1.touch + end + + get :index, params: { recent: true }, xhr: true + + expect(response.status).to be(200) + expect(data.size).to eq(5) + attributes = data.first['attributes'] + expect(attributes['name']).to eq credentials1.name + expect(attributes['description']).to eq credentials1.description + + + end + it 'doesn\'t show credentials with no access' do + login_as(:bob) + + recentCredentials1 = recentCredentials.first + + PaperTrail.request(whodunnit: alice.id) do + recentCredentials1.touch + end + + get :index, params: { recent: true }, xhr: true + + expect(response.status).to be(200) + expect(data.size).to eq(0) + end + + it 'doesn\'t show deleted credentials' do + login_as(:alice) + + recentCredentials1 = recentCredentials.first + + PaperTrail.request(whodunnit: alice.id) do + recentCredentials1.touch + end + + get :index, params: { recent: true }, xhr: true + + + expect(data.size).to eq(1) + attributes = data.first['attributes'] + expect(attributes['name']).to eq recentCredentials1.name + expect(attributes['description']).to eq recentCredentials1.description + + recentCredentials1.destroy + + get :index, params: { recent: true }, xhr: true + + expect(response.status).to be(200) + expect(data.size).to eq(0) + end + end end diff --git a/spec/fabricators/encryptables/credentials_fabricator.rb b/spec/fabricators/encryptables/credentials_fabricator.rb index dd4cd5d7a..261b1e5c4 100644 --- a/spec/fabricators/encryptables/credentials_fabricator.rb +++ b/spec/fabricators/encryptables/credentials_fabricator.rb @@ -7,7 +7,7 @@ Fabricator(:credential, from: 'Encryptable::Credentials') do transient :team_password - name { Faker::Team.creature } + name { sequence(:name) { |i| Faker::Team.creature + " #{i}"} } cleartext_username { Faker::Internet.user_name } cleartext_password { Faker::Internet.password } before_save do |account, attrs| From 61369fedbb9dc5e8d8fa4adb4ddce7b437fe8e15 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Tue, 10 May 2022 08:25:37 +0200 Subject: [PATCH 63/82] fixes system specs --- spec/system/dashboard_system_spec.rb | 31 ++++++++++++++-------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/spec/system/dashboard_system_spec.rb b/spec/system/dashboard_system_spec.rb index d7d057c9f..5af9eeda9 100644 --- a/spec/system/dashboard_system_spec.rb +++ b/spec/system/dashboard_system_spec.rb @@ -4,8 +4,15 @@ describe 'Dashboard', type: :system, js: true do include SystemHelpers + + let(:credentials) { encryptables(:credentials1) } + let(:team) { teams(:team1) } + + it 'renders dashboard grid' do login_as_user(:alice) + visit("/encryptables/#{credentials.id}") + visit('/dashboard') expect(page.current_path).to eq('/dashboard') expect(page).to have_selector('pzsh-hero', visible: true) @@ -15,18 +22,19 @@ expect(page).to have_text('Teams', count: 1) expect(page).not_to have_selector 'div.content' expect(page).to have_selector('div.primary-content', count: 3) - expect(page).to have_selector('div.dashboard-grid-card', count: 7) + expect(page).to have_selector('div.dashboard-grid-card', count: 3) end it 'navigates to team on team card click' do login_as_user(:alice) + visit("/encryptables/#{credentials.id}") + visit('/dashboard') + expect(page.current_path).to eq('/dashboard') expect(page).to have_selector('pzsh-hero', visible: true) - team = Team.first - first('div.dashboard-grid-card', text: team.name).click expect(page.current_path).to eq("/teams/#{team.id}") @@ -35,25 +43,18 @@ it 'navigates to encryptable on encryptable card click' do login_as_user(:alice) + visit("/encryptables/#{credentials.id}") + visit('/dashboard') + expect(page.current_path).to eq('/dashboard') expect(page).to have_selector('pzsh-hero', visible: true) - encryptable = Encryptable.find_by(name: 'Recent 1') + first('div.dashboard-grid-card', text: credentials.name).click - first('div.dashboard-grid-card', text: encryptable.name).click - - expect(page.current_path).to eq("/encryptables/#{encryptable.id}") + expect(page.current_path).to eq("/encryptables/#{credentials.id}") expect(page).to have_selector 'div.content' end - it 'shows visited encryptable first in list' do - login_as_user(:alice) - - encryptable = Encryptable.find_by(name: 'Recent 5') - visit("/encryptables/#{encryptable.id}") - visit('/dashboard') - expect(first('div.dashboard-grid-card')).to have_text('Recent 5') - end end From 01d47ef6cf814cdf404908f62075b4f3e887961a Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Tue, 10 May 2022 08:54:48 +0200 Subject: [PATCH 64/82] fixes rubocop errors --- .../api/encryptables_controller_spec.rb | 19 +++++++++---------- .../encryptables/credentials_fabricator.rb | 2 +- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/spec/controllers/api/encryptables_controller_spec.rb b/spec/controllers/api/encryptables_controller_spec.rb index 901b0de51..d88254bc9 100644 --- a/spec/controllers/api/encryptables_controller_spec.rb +++ b/spec/controllers/api/encryptables_controller_spec.rb @@ -110,7 +110,7 @@ folder: teams(:team1).folders.first, team_password: Crypto::Symmetric::Aes256.random_key ) - end + end it 'returns most recent cerdentials' do @@ -147,17 +147,16 @@ expect(data.size).to eq(5) attributes = data.first['attributes'] expect(attributes['name']).to eq credentials1.name - expect(attributes['description']).to eq credentials1.description + expect(attributes['description']).to eq credentials1.description - end it 'doesn\'t show credentials with no access' do login_as(:bob) - recentCredentials1 = recentCredentials.first + recent_credentials1 = recentCredentials.first PaperTrail.request(whodunnit: alice.id) do - recentCredentials1.touch + recent_credentials1.touch end get :index, params: { recent: true }, xhr: true @@ -169,10 +168,10 @@ it 'doesn\'t show deleted credentials' do login_as(:alice) - recentCredentials1 = recentCredentials.first + recent_credentials1 = recentCredentials.first PaperTrail.request(whodunnit: alice.id) do - recentCredentials1.touch + recent_credentials1.touch end get :index, params: { recent: true }, xhr: true @@ -180,10 +179,10 @@ expect(data.size).to eq(1) attributes = data.first['attributes'] - expect(attributes['name']).to eq recentCredentials1.name - expect(attributes['description']).to eq recentCredentials1.description + expect(attributes['name']).to eq recent_credentials1.name + expect(attributes['description']).to eq recent_credentials1.description - recentCredentials1.destroy + recent_credentials1.destroy get :index, params: { recent: true }, xhr: true diff --git a/spec/fabricators/encryptables/credentials_fabricator.rb b/spec/fabricators/encryptables/credentials_fabricator.rb index 261b1e5c4..8797270d9 100644 --- a/spec/fabricators/encryptables/credentials_fabricator.rb +++ b/spec/fabricators/encryptables/credentials_fabricator.rb @@ -7,7 +7,7 @@ Fabricator(:credential, from: 'Encryptable::Credentials') do transient :team_password - name { sequence(:name) { |i| Faker::Team.creature + " #{i}"} } + name { sequence(:name) { |i| Faker::Team.creature + " #{i}" } } cleartext_username { Faker::Internet.user_name } cleartext_password { Faker::Internet.password } before_save do |account, attrs| From f85074796d8fd3b7cb5cc234d76264853a7bf63d Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Tue, 10 May 2022 09:06:08 +0200 Subject: [PATCH 65/82] removes remains from merge conflict --- spec/models/encryptable_spec.rb | 34 --------------------------------- 1 file changed, 34 deletions(-) diff --git a/spec/models/encryptable_spec.rb b/spec/models/encryptable_spec.rb index 7c23faa6e..531ae2a0f 100644 --- a/spec/models/encryptable_spec.rb +++ b/spec/models/encryptable_spec.rb @@ -82,40 +82,6 @@ end end -<<<<<<< HEAD - context 'papertrail', versioning: true do - context 'delete' do - it 'deletes log history if encryptable is delted' do - - 1000.times do - encryptable.touch - end - - expect(encryptable.versions.size).to eq(1000) - - encryptable.destroy - - expect(PaperTrail::Version.all.size).to be(0) - end - end - - context 'touch' do - it 'creates a log entry' do - encryptable.touch - expect(encryptable.versions.count).to eq(1) - end - - it 'contains user in whodunnit' do - PaperTrail.request.whodunnit = 'Bob' - - encryptable.touch - expect(encryptable.versions.last.whodunnit).to eq('Bob') - end - end - end - -======= ->>>>>>> 564-LOG_encryptable_read_access private def create_legacy_ose_secret From 1ce6880c1e232aa3b66b59a1c9a667ef82257974 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Thu, 12 May 2022 14:40:02 +0200 Subject: [PATCH 66/82] pressed backspace once --- spec/controllers/api/encryptables_controller_spec.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/spec/controllers/api/encryptables_controller_spec.rb b/spec/controllers/api/encryptables_controller_spec.rb index 0d71b2618..dc2b8a063 100644 --- a/spec/controllers/api/encryptables_controller_spec.rb +++ b/spec/controllers/api/encryptables_controller_spec.rb @@ -15,7 +15,6 @@ let(:credentials1) { encryptables(:credentials1) } let(:encryptable) { encryptables.first } - context 'GET index' do it 'returns encryptable with matching name' do login_as(:alice) From 4622b018f780c8269858b97d2d71bf42286645a8 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Wed, 18 May 2022 10:37:20 +0200 Subject: [PATCH 67/82] change spelling in specs --- spec/controllers/api/encryptables_controller_spec.rb | 8 ++++---- spec/system/dashboard_system_spec.rb | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/spec/controllers/api/encryptables_controller_spec.rb b/spec/controllers/api/encryptables_controller_spec.rb index dc2b8a063..8c3a1e938 100644 --- a/spec/controllers/api/encryptables_controller_spec.rb +++ b/spec/controllers/api/encryptables_controller_spec.rb @@ -103,7 +103,7 @@ context 'recent Credentials' do - let!(:recentCredentials) do + let!(:recent_Credentials) do Fabricate.times( 6, :credential, @@ -150,7 +150,7 @@ expect(attributes['description']).to eq credentials1.description end - it 'doesn\'t show credentials with no access' do + it 'does not show credentials with no access' do login_as(:bob) recent_credentials1 = recentCredentials.first @@ -165,7 +165,7 @@ expect(data.size).to eq(0) end - it 'doesn\'t show deleted credentials' do + it 'does not show deleted credentials' do login_as(:alice) recent_credentials1 = recentCredentials.first @@ -182,7 +182,7 @@ expect(attributes['name']).to eq recent_credentials1.name expect(attributes['description']).to eq recent_credentials1.description - recent_credentials1.destroy + recent_credentials1.destroy! get :index, params: { recent: true }, xhr: true diff --git a/spec/system/dashboard_system_spec.rb b/spec/system/dashboard_system_spec.rb index 5af9eeda9..a01ee2863 100644 --- a/spec/system/dashboard_system_spec.rb +++ b/spec/system/dashboard_system_spec.rb @@ -41,7 +41,7 @@ expect(page).to have_selector 'div.content' end - it 'navigates to encryptable on encryptable card click' do + it 'lists recently accessed encryptable' do login_as_user(:alice) visit("/encryptables/#{credentials.id}") visit('/dashboard') From 1508e17059b4dd57a23ba65589d818b0508ce42b Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Wed, 18 May 2022 10:39:37 +0200 Subject: [PATCH 68/82] add method true? to evaluate params --- app/presenters/encryptables/filtered_list.rb | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/app/presenters/encryptables/filtered_list.rb b/app/presenters/encryptables/filtered_list.rb index d6f7815ea..d1d8875c5 100644 --- a/app/presenters/encryptables/filtered_list.rb +++ b/app/presenters/encryptables/filtered_list.rb @@ -6,7 +6,7 @@ class FilteredList < ::FilteredList def fetch_entries filtered_encryptables = encryptables - filtered_encryptables = filter_by_recent if recent + filtered_encryptables = filter_by_recent if recent? filtered_encryptables = filter_by_query(filtered_encryptables) if query @@ -19,8 +19,12 @@ def query @params[:q]&.strip&.downcase end - def recent - @params[:recent] + def recent? + true?(@params[:recent]) + end + + def true?(value) + %w(1 yes true).include?(value.to_s.downcase) end def encryptables From 78971f207b3b8b27b7029d7c4b151725579914fb Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Wed, 18 May 2022 10:49:57 +0200 Subject: [PATCH 69/82] rewrite variable in camel_case --- .../api/encryptables_controller_spec.rb | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/spec/controllers/api/encryptables_controller_spec.rb b/spec/controllers/api/encryptables_controller_spec.rb index 8c3a1e938..acaccca02 100644 --- a/spec/controllers/api/encryptables_controller_spec.rb +++ b/spec/controllers/api/encryptables_controller_spec.rb @@ -103,7 +103,7 @@ context 'recent Credentials' do - let!(:recent_Credentials) do + let!(:recent_credentials) do Fabricate.times( 6, :credential, @@ -116,7 +116,7 @@ login_as(:alice) - recentCredentials.each do |credential| + recent_credentials.each do |credential| PaperTrail.request(whodunnit: alice.id) do credential.touch end @@ -127,15 +127,15 @@ expect(response.status).to be(200) expect(data.size).to eq(5) attributes = data.first['attributes'] - expect(attributes['name']).to eq recentCredentials.last.name - expect(attributes['description']).to eq recentCredentials.last.description + expect(attributes['name']).to eq recent_credentials.last.name + expect(attributes['description']).to eq recent_credentials.last.description end it 'shows most recently used credential first in list' do login_as(:alice) PaperTrail.request(whodunnit: alice.id) do - recentCredentials.each do |credential| + recent_credentials.each do |credential| credential.touch end credentials1.touch @@ -153,7 +153,7 @@ it 'does not show credentials with no access' do login_as(:bob) - recent_credentials1 = recentCredentials.first + recent_credentials1 = recent_credentials.first PaperTrail.request(whodunnit: alice.id) do recent_credentials1.touch @@ -168,7 +168,7 @@ it 'does not show deleted credentials' do login_as(:alice) - recent_credentials1 = recentCredentials.first + recent_credentials1 = recent_credentials.first PaperTrail.request(whodunnit: alice.id) do recent_credentials1.touch From 2f54b216adba71af0737225b3c8cac0563733eb8 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Wed, 18 May 2022 10:58:59 +0200 Subject: [PATCH 70/82] move method true? to base class filtered_list --- app/presenters/filtered_list.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/presenters/filtered_list.rb b/app/presenters/filtered_list.rb index 92b3a2b62..460f59196 100644 --- a/app/presenters/filtered_list.rb +++ b/app/presenters/filtered_list.rb @@ -15,4 +15,8 @@ def fetch_entries def list_param(key) @params[key].to_a.map(&:to_i) end + + def true?(value) + %w(1 yes true).include?(value.to_s.downcase) + end end From 1d729c13ffb6263dd1c36188f126cce39acf23ae Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Wed, 18 May 2022 11:58:45 +0200 Subject: [PATCH 71/82] include encryptables when loading logs --- app/presenters/encryptables/filtered_list.rb | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/app/presenters/encryptables/filtered_list.rb b/app/presenters/encryptables/filtered_list.rb index d1d8875c5..b47b88299 100644 --- a/app/presenters/encryptables/filtered_list.rb +++ b/app/presenters/encryptables/filtered_list.rb @@ -23,10 +23,6 @@ def recent? true?(@params[:recent]) end - def true?(value) - %w(1 yes true).include?(value.to_s.downcase) - end - def encryptables @current_user.encryptables end @@ -40,13 +36,14 @@ def filter_by_query(encryptables) end def filter_by_recent - PaperTrail::Version + Version + .includes(:encryptable) .where(whodunnit: @current_user) .order(created_at: :desc) .group(:item_id, :item_type) .select(:item_id, :item_type) .limit(5) - .map(&:item) + .map(&:encryptable) end end end From df28b429512e03ca4b64bc059ffbb55729eac5e6 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Wed, 18 May 2022 12:36:39 +0200 Subject: [PATCH 72/82] extend includes to also include folders --- app/presenters/encryptables/filtered_list.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/presenters/encryptables/filtered_list.rb b/app/presenters/encryptables/filtered_list.rb index b47b88299..785dd0f47 100644 --- a/app/presenters/encryptables/filtered_list.rb +++ b/app/presenters/encryptables/filtered_list.rb @@ -37,7 +37,7 @@ def filter_by_query(encryptables) def filter_by_recent Version - .includes(:encryptable) + .includes(:encryptable, encryptable: [:folder]) .where(whodunnit: @current_user) .order(created_at: :desc) .group(:item_id, :item_type) From 130e5c8abd08931b47a418732aac10549a64eb7b Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Wed, 18 May 2022 12:41:02 +0200 Subject: [PATCH 73/82] change fabricated credentials --- spec/controllers/api/encryptables_controller_spec.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/spec/controllers/api/encryptables_controller_spec.rb b/spec/controllers/api/encryptables_controller_spec.rb index acaccca02..13ad7d07b 100644 --- a/spec/controllers/api/encryptables_controller_spec.rb +++ b/spec/controllers/api/encryptables_controller_spec.rb @@ -104,11 +104,14 @@ context 'recent Credentials' do let!(:recent_credentials) do + folder = teams(:team1).folder.first + private_key = decrypt_private_key(bob) + team_password = folder.team.decrypt_team_password(bob, private_key) Fabricate.times( 6, :credential, - folder: teams(:team1).folders.first, - team_password: Crypto::Symmetric::Aes256.random_key + folder: folder, + team_password: team_password ) end From b5f4daf42fc19b24950d26d23c88cc005b0a5887 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Wed, 18 May 2022 13:23:00 +0200 Subject: [PATCH 74/82] fix error from merge conflict --- spec/controllers/api/encryptables_controller_spec.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/controllers/api/encryptables_controller_spec.rb b/spec/controllers/api/encryptables_controller_spec.rb index 5946d140a..9afeed34d 100644 --- a/spec/controllers/api/encryptables_controller_spec.rb +++ b/spec/controllers/api/encryptables_controller_spec.rb @@ -222,6 +222,7 @@ expect(response.status).to eq(403) end + end context 'GET show' do it 'returns decrypted encryptable credentials' do From 9ab5e356d62c98a21e787f84537c9d77383ac53c Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Wed, 18 May 2022 14:04:11 +0200 Subject: [PATCH 75/82] fix rubocop errors --- app/controllers/api/encryptables_controller.rb | 2 +- app/presenters/filtered_list.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/api/encryptables_controller.rb b/app/controllers/api/encryptables_controller.rb index 2643758d6..d5407bccd 100644 --- a/app/controllers/api/encryptables_controller.rb +++ b/app/controllers/api/encryptables_controller.rb @@ -80,7 +80,7 @@ def fetch_entries encryptables end - def build_entry + def build_entry return build_encryptable_file if encryptable_file? super diff --git a/app/presenters/filtered_list.rb b/app/presenters/filtered_list.rb index 460f59196..fb3dce893 100644 --- a/app/presenters/filtered_list.rb +++ b/app/presenters/filtered_list.rb @@ -17,6 +17,6 @@ def list_param(key) end def true?(value) - %w(1 yes true).include?(value.to_s.downcase) + %w[1 yes true].include?(value.to_s.downcase) end end From 580ed23ea452d2bd212ae84fab594046d34aa5db Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Wed, 18 May 2022 14:39:39 +0200 Subject: [PATCH 76/82] fix encryptables controller spec --- .../api/encryptables_controller_spec.rb | 64 ++++++++++--------- 1 file changed, 33 insertions(+), 31 deletions(-) diff --git a/spec/controllers/api/encryptables_controller_spec.rb b/spec/controllers/api/encryptables_controller_spec.rb index 9afeed34d..987999e83 100644 --- a/spec/controllers/api/encryptables_controller_spec.rb +++ b/spec/controllers/api/encryptables_controller_spec.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true require 'spec_helper' +require 'pry' describe Api::EncryptablesController do include ControllerHelpers @@ -101,9 +102,40 @@ expect_json_object_includes_keys(credentials2_json_relationships, nested_models) end + it 'returns encryptable files for credentials entry' do + login_as(:alice) + + credentials1 = encryptables(:credentials1) + file1 = encryptables(:file1) + + get :index, params: { 'credential_id': credentials1.id }, xhr: true + + binding.pry + files_json = data.first + files_json_attributes = files_json['attributes'] + + expect(data.count).to eq 1 + expect(files_json['id']).to eq file1.id.to_s + expect(files_json_attributes['name']).to eq file1.name + expect(files_json_attributes['description']).to eq 'One-Time access codes' + + file_attributes = %w[name description] + expect_json_object_includes_keys(files_json_attributes, file_attributes) + end + + it 'does not return encryptable file without access' do + login_as(:alice) + + file = create_file + + get :show, params: { id: file.id }, xhr: true + + expect(response.status).to eq(403) + end + context 'recent Credentials' do let!(:recent_credentials) do - folder = teams(:team1).folder.first + folder = teams(:team1).folders.first private_key = decrypt_private_key(bob) team_password = folder.team.decrypt_team_password(bob, private_key) Fabricate.times( @@ -192,36 +224,6 @@ expect(data.size).to eq(0) end end - - it 'returns encryptable files for credentials entry' do - login_as(:alice) - - credentials1 = encryptables(:credentials1) - file1 = encryptables(:file1) - - get :index, params: { 'credential_id': credentials1.id }, xhr: true - - files_json = data.first - files_json_attributes = files_json['attributes'] - - expect(data.count).to eq 1 - expect(files_json['id']).to eq file1.id.to_s - expect(files_json_attributes['name']).to eq file1.name - expect(files_json_attributes['description']).to eq 'One-Time access codes' - - file_attributes = %w[name description] - expect_json_object_includes_keys(files_json_attributes, file_attributes) - end - - it 'does not return encryptable file without access' do - login_as(:alice) - - file = create_file - - get :show, params: { id: file.id }, xhr: true - - expect(response.status).to eq(403) - end end context 'GET show' do From 0a9ddc46c33582e8f0abf16a5fffc206f2340f1a Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Wed, 18 May 2022 16:00:48 +0200 Subject: [PATCH 77/82] change method fetch_entries to work with encryptable_file lookup --- app/controllers/api/encryptables_controller.rb | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/app/controllers/api/encryptables_controller.rb b/app/controllers/api/encryptables_controller.rb index d5407bccd..9ac76791c 100644 --- a/app/controllers/api/encryptables_controller.rb +++ b/app/controllers/api/encryptables_controller.rb @@ -73,11 +73,15 @@ def model_class # rubocop:enable Metrics/MethodLength def fetch_entries - encryptables = Encryptables::FilteredList.new(current_user, params).fetch_entries - if tag_param.present? - encryptables = encryptables.find_by(tag: tag_param) + if encryptable_file? + super + else + encryptables = Encryptables::FilteredList.new(current_user, params).fetch_entries + if tag_param.present? + encryptables = encryptables.find_by(tag: tag_param) + end + encryptables end - encryptables end def build_entry From 47de094b4030330decf6639b0884dafc56e143c1 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Wed, 18 May 2022 16:35:52 +0200 Subject: [PATCH 78/82] create method log_read_access to create logs instead of touch --- .../api/encryptables_controller_spec.rb | 35 +++++++++---------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/spec/controllers/api/encryptables_controller_spec.rb b/spec/controllers/api/encryptables_controller_spec.rb index 987999e83..097abbed8 100644 --- a/spec/controllers/api/encryptables_controller_spec.rb +++ b/spec/controllers/api/encryptables_controller_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'spec_helper' -require 'pry' describe Api::EncryptablesController do include ControllerHelpers @@ -110,7 +109,6 @@ get :index, params: { 'credential_id': credentials1.id }, xhr: true - binding.pry files_json = data.first files_json_attributes = files_json['attributes'] @@ -150,10 +148,9 @@ login_as(:alice) + recent_credentials.each do |credential| - PaperTrail.request(whodunnit: alice.id) do - credential.touch - end + log_read_access(alice.id, credential) end get :index, params: { recent: true }, xhr: true @@ -168,12 +165,11 @@ it 'shows most recently used credential first in list' do login_as(:alice) - PaperTrail.request(whodunnit: alice.id) do - recent_credentials.each do |credential| - credential.touch - end - credentials1.touch + + recent_credentials.each do |credential| + log_read_access(alice.id, credential) end + log_read_access(alice.id, credentials1) get :index, params: { recent: true }, xhr: true @@ -188,10 +184,7 @@ login_as(:bob) recent_credentials1 = recent_credentials.first - - PaperTrail.request(whodunnit: alice.id) do - recent_credentials1.touch - end + log_read_access(alice.id, recent_credentials1) get :index, params: { recent: true }, xhr: true @@ -203,14 +196,12 @@ login_as(:alice) recent_credentials1 = recent_credentials.first - - PaperTrail.request(whodunnit: alice.id) do - recent_credentials1.touch - end + log_read_access(alice.id, recent_credentials1) get :index, params: { recent: true }, xhr: true + expect(data.size).to eq(1) attributes = data.first['attributes'] expect(attributes['name']).to eq recent_credentials1.name @@ -872,4 +863,12 @@ def set_auth_headers request.headers['Authorization-User'] = bob.username request.headers['Authorization-Password'] = Base64.encode64('password') end + + def log_read_access (user_id, credential) + v = credential.paper_trail.save_with_version + v.whodunnit = user_id + v.event = :viewed + v.created_at = DateTime.now + v.save! + end end From 777fc7d5bbfad58381a88c7676061451ba298b34 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Wed, 18 May 2022 17:18:28 +0200 Subject: [PATCH 79/82] fix rubocop errors --- spec/controllers/api/encryptables_controller_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/controllers/api/encryptables_controller_spec.rb b/spec/controllers/api/encryptables_controller_spec.rb index 097abbed8..73c447006 100644 --- a/spec/controllers/api/encryptables_controller_spec.rb +++ b/spec/controllers/api/encryptables_controller_spec.rb @@ -864,7 +864,7 @@ def set_auth_headers request.headers['Authorization-Password'] = Base64.encode64('password') end - def log_read_access (user_id, credential) + def log_read_access(user_id, credential) v = credential.paper_trail.save_with_version v.whodunnit = user_id v.event = :viewed From 9b639e0ef8a6b0833d3efb35ce39feaf2674c864 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Fri, 20 May 2022 16:35:26 +0200 Subject: [PATCH 80/82] correct spelling and fill in mariana trench --- spec/controllers/api/encryptables_controller_spec.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/spec/controllers/api/encryptables_controller_spec.rb b/spec/controllers/api/encryptables_controller_spec.rb index 73c447006..8c2c19f0f 100644 --- a/spec/controllers/api/encryptables_controller_spec.rb +++ b/spec/controllers/api/encryptables_controller_spec.rb @@ -144,7 +144,7 @@ ) end - it 'returns most recent cerdentials' do + it 'returns most recent credentials' do login_as(:alice) @@ -200,8 +200,6 @@ get :index, params: { recent: true }, xhr: true - - expect(data.size).to eq(1) attributes = data.first['attributes'] expect(attributes['name']).to eq recent_credentials1.name From e0a209c8bf8afb7d6b4e7299f80b8063aab660f8 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Sun, 22 May 2022 22:51:00 +0200 Subject: [PATCH 81/82] rework fetch_entries method --- app/controllers/api/encryptables_controller.rb | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/app/controllers/api/encryptables_controller.rb b/app/controllers/api/encryptables_controller.rb index 9ac76791c..9327df5bb 100644 --- a/app/controllers/api/encryptables_controller.rb +++ b/app/controllers/api/encryptables_controller.rb @@ -75,13 +75,10 @@ def model_class def fetch_entries if encryptable_file? super + if tag_param.present? + encryptables = encryptables.find_by(tag: tag_param) else encryptables = Encryptables::FilteredList.new(current_user, params).fetch_entries - if tag_param.present? - encryptables = encryptables.find_by(tag: tag_param) - end - encryptables - end end def build_entry From 8816bd317c57d255b643ab9791b564a3d1d06cb9 Mon Sep 17 00:00:00 2001 From: Renato Oester Date: Sun, 22 May 2022 23:25:38 +0200 Subject: [PATCH 82/82] fix fetch_entries method --- app/controllers/api/encryptables_controller.rb | 7 ++++--- spec/controllers/api/encryptables_controller_spec.rb | 2 -- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/app/controllers/api/encryptables_controller.rb b/app/controllers/api/encryptables_controller.rb index 9327df5bb..bf8d8eaf5 100644 --- a/app/controllers/api/encryptables_controller.rb +++ b/app/controllers/api/encryptables_controller.rb @@ -75,10 +75,11 @@ def model_class def fetch_entries if encryptable_file? super - if tag_param.present? - encryptables = encryptables.find_by(tag: tag_param) + elsif tag_param.present? + user_encryptables.find_by(tag: tag_param) else - encryptables = Encryptables::FilteredList.new(current_user, params).fetch_entries + Encryptables::FilteredList.new(current_user, params).fetch_entries + end end def build_entry diff --git a/spec/controllers/api/encryptables_controller_spec.rb b/spec/controllers/api/encryptables_controller_spec.rb index 8c2c19f0f..3122d15de 100644 --- a/spec/controllers/api/encryptables_controller_spec.rb +++ b/spec/controllers/api/encryptables_controller_spec.rb @@ -145,10 +145,8 @@ end it 'returns most recent credentials' do - login_as(:alice) - recent_credentials.each do |credential| log_read_access(alice.id, credential) end