diff --git a/CHANGELOG.md b/CHANGELOG.md index 74fe7db59..183ead51b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +- Added the alias to the `Access` database schema - Added support for translated time distances ### Changed diff --git a/apps/api/src/app/access/access.controller.ts b/apps/api/src/app/access/access.controller.ts index a778d8b57..dd40a19f4 100644 --- a/apps/api/src/app/access/access.controller.ts +++ b/apps/api/src/app/access/access.controller.ts @@ -42,14 +42,16 @@ export class AccessController { return accessesWithGranteeUser.map((access) => { if (access.GranteeUser) { return { - granteeAlias: access.GranteeUser?.alias, + alias: access.alias, + grantee: access.GranteeUser?.id, id: access.id, type: 'RESTRICTED_VIEW' }; } return { - granteeAlias: 'Public', + alias: access.alias, + grantee: 'Public', id: access.id, type: 'PUBLIC' }; @@ -71,6 +73,10 @@ export class AccessController { } return this.accessService.createAccess({ + alias: data.alias || undefined, + GranteeUser: data.granteeUserId + ? { connect: { id: data.granteeUserId } } + : undefined, User: { connect: { id: this.request.user.id } } }); } diff --git a/apps/api/src/app/access/create-access.dto.ts b/apps/api/src/app/access/create-access.dto.ts index 672e195c2..055cb6610 100644 --- a/apps/api/src/app/access/create-access.dto.ts +++ b/apps/api/src/app/access/create-access.dto.ts @@ -1 +1,11 @@ -export class CreateAccessDto {} +import { IsOptional, IsString } from 'class-validator'; + +export class CreateAccessDto { + @IsOptional() + @IsString() + alias?: string; + + @IsOptional() + @IsString() + granteeUserId?: string; +} diff --git a/apps/api/src/app/portfolio/portfolio.controller.ts b/apps/api/src/app/portfolio/portfolio.controller.ts index 00919b835..5172b8071 100644 --- a/apps/api/src/app/portfolio/portfolio.controller.ts +++ b/apps/api/src/app/portfolio/portfolio.controller.ts @@ -349,6 +349,7 @@ export class PortfolioController { const portfolioPublicDetails: PortfolioPublicDetails = { hasDetails, + alias: access.alias, holdings: {} }; diff --git a/apps/api/src/app/user/user.service.ts b/apps/api/src/app/user/user.service.ts index 213351ede..57e3ba80d 100644 --- a/apps/api/src/app/user/user.service.ts +++ b/apps/api/src/app/user/user.service.ts @@ -62,7 +62,7 @@ export class UserService { tags, access: access.map((accessItem) => { return { - alias: accessItem.User.alias, + alias: accessItem.alias, id: accessItem.id }; }), diff --git a/apps/client/src/app/components/access-table/access-table.component.html b/apps/client/src/app/components/access-table/access-table.component.html index 93c9356c3..5b54156ce 100644 --- a/apps/client/src/app/components/access-table/access-table.component.html +++ b/apps/client/src/app/components/access-table/access-table.component.html @@ -1,8 +1,15 @@ - + + + + + + diff --git a/apps/client/src/app/components/access-table/access-table.component.ts b/apps/client/src/app/components/access-table/access-table.component.ts index de26e5938..c0db8fb2f 100644 --- a/apps/client/src/app/components/access-table/access-table.component.ts +++ b/apps/client/src/app/components/access-table/access-table.component.ts @@ -33,7 +33,7 @@ export class AccessTableComponent implements OnChanges, OnInit { public ngOnInit() {} public ngOnChanges() { - this.displayedColumns = ['granteeAlias', 'type', 'details']; + this.displayedColumns = ['alias', 'grantee', 'type', 'details']; if (this.showActions) { this.displayedColumns.push('actions'); diff --git a/apps/client/src/app/pages/account/account-page.component.ts b/apps/client/src/app/pages/account/account-page.component.ts index 7c97fef6f..99900e15a 100644 --- a/apps/client/src/app/pages/account/account-page.component.ts +++ b/apps/client/src/app/pages/account/account-page.component.ts @@ -316,6 +316,7 @@ export class AccountPageComponent implements OnDestroy, OnInit { const dialogRef = this.dialog.open(CreateOrUpdateAccessDialog, { data: { access: { + alias: '', type: 'PUBLIC' } }, @@ -331,7 +332,7 @@ export class AccountPageComponent implements OnDestroy, OnInit { if (access) { this.dataService - .postAccess({}) + .postAccess({ alias: access.alias }) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe({ next: () => { diff --git a/apps/client/src/app/pages/account/create-or-update-access-dialog/create-or-update-access-dialog.html b/apps/client/src/app/pages/account/create-or-update-access-dialog/create-or-update-access-dialog.html index badb12f69..273bfd095 100644 --- a/apps/client/src/app/pages/account/create-or-update-access-dialog/create-or-update-access-dialog.html +++ b/apps/client/src/app/pages/account/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -1,6 +1,17 @@

Grant access

+
+ + Alias + + +
Type diff --git a/apps/client/src/app/pages/account/create-or-update-access-dialog/create-or-update-access-dialog.module.ts b/apps/client/src/app/pages/account/create-or-update-access-dialog/create-or-update-access-dialog.module.ts index 0e7c97d65..1a1169ed3 100644 --- a/apps/client/src/app/pages/account/create-or-update-access-dialog/create-or-update-access-dialog.module.ts +++ b/apps/client/src/app/pages/account/create-or-update-access-dialog/create-or-update-access-dialog.module.ts @@ -4,6 +4,7 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; import { MatDialogModule } from '@angular/material/dialog'; import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatInputModule } from '@angular/material/input'; import { MatSelectModule } from '@angular/material/select'; import { CreateOrUpdateAccessDialog } from './create-or-update-access-dialog.component'; @@ -16,6 +17,7 @@ import { CreateOrUpdateAccessDialog } from './create-or-update-access-dialog.com MatButtonModule, MatDialogModule, MatFormFieldModule, + MatInputModule, MatSelectModule, ReactiveFormsModule ] diff --git a/apps/client/src/app/pages/public/public-page.html b/apps/client/src/app/pages/public/public-page.html index ee2e368cd..04c1cc6b2 100644 --- a/apps/client/src/app/pages/public/public-page.html +++ b/apps/client/src/app/pages/public/public-page.html @@ -2,7 +2,8 @@

- Hello, someone has shared a Portfolio with you! + Hello, {{ portfolioPublicDetails?.alias ?? 'someone' }} has shared a + Portfolio with you!

diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 75d936354..1bdce8dfe 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -26,7 +26,7 @@ Empfänger apps/client/src/app/components/access-table/access-table.component.html - 3 + 10 @@ -34,7 +34,7 @@ Typ apps/client/src/app/components/access-table/access-table.component.html - 10 + 17 apps/client/src/app/components/admin-jobs/admin-jobs.html @@ -42,7 +42,7 @@ apps/client/src/app/pages/account/create-or-update-access-dialog/create-or-update-access-dialog.html - 6 + 17 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -62,7 +62,7 @@ Details apps/client/src/app/components/access-table/access-table.component.html - 20 + 27 @@ -70,7 +70,7 @@ Widerrufen apps/client/src/app/components/access-table/access-table.component.html - 47 + 54 @@ -366,7 +366,7 @@ apps/client/src/app/pages/account/create-or-update-access-dialog/create-or-update-access-dialog.html - 14 + 25 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -390,7 +390,7 @@ apps/client/src/app/pages/account/create-or-update-access-dialog/create-or-update-access-dialog.html - 21 + 32 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -798,7 +798,7 @@ Registrieren apps/client/src/app/pages/public/public-page.html - 136 + 137 @@ -1070,7 +1070,7 @@ apps/client/src/app/pages/public/public-page.html - 44 + 45 @@ -1438,7 +1438,7 @@ Öffentlich apps/client/src/app/pages/account/create-or-update-access-dialog/create-or-update-access-dialog.html - 8 + 19 @@ -1678,7 +1678,7 @@ apps/client/src/app/pages/public/public-page.html - 75 + 76 @@ -1782,7 +1782,7 @@ apps/client/src/app/pages/public/public-page.html - 13 + 14 @@ -2041,20 +2041,12 @@ 12 - - Hello, someone has shared a Portfolio with you! - - - apps/client/src/app/pages/public/public-page.html - 4,6 - - Currencies Währungen apps/client/src/app/pages/public/public-page.html - 29 + 30 @@ -2062,7 +2054,7 @@ Kontinente apps/client/src/app/pages/public/public-page.html - 59 + 60 @@ -2070,7 +2062,7 @@ apps/client/src/app/pages/public/public-page.html - 131,133 + 132,134 @@ -2422,7 +2414,7 @@ apps/client/src/app/pages/public/public-page.html - 89 + 90 @@ -2434,7 +2426,7 @@ apps/client/src/app/pages/public/public-page.html - 98 + 99 @@ -2446,7 +2438,7 @@ apps/client/src/app/pages/public/public-page.html - 107 + 108 @@ -2629,6 +2621,26 @@ 291 + + Alias + Alias + + apps/client/src/app/components/access-table/access-table.component.html + 3 + + + apps/client/src/app/pages/account/create-or-update-access-dialog/create-or-update-access-dialog.html + 6 + + + + Hello, has shared a Portfolio with you! + Hallo, hat ein Portfolio mit dir geteilt! + + apps/client/src/app/pages/public/public-page.html + 4,7 + + diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 10ab22415..90471608c 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -24,14 +24,14 @@ Grantee apps/client/src/app/components/access-table/access-table.component.html - 3 + 10 Type apps/client/src/app/components/access-table/access-table.component.html - 10 + 17 apps/client/src/app/components/admin-jobs/admin-jobs.html @@ -39,7 +39,7 @@ apps/client/src/app/pages/account/create-or-update-access-dialog/create-or-update-access-dialog.html - 6 + 17 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -58,14 +58,14 @@ Details apps/client/src/app/components/access-table/access-table.component.html - 20 + 27 Revoke apps/client/src/app/components/access-table/access-table.component.html - 47 + 54 @@ -337,7 +337,7 @@ apps/client/src/app/pages/account/create-or-update-access-dialog/create-or-update-access-dialog.html - 14 + 25 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -360,7 +360,7 @@ apps/client/src/app/pages/account/create-or-update-access-dialog/create-or-update-access-dialog.html - 21 + 32 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -726,7 +726,7 @@ Get Started apps/client/src/app/pages/public/public-page.html - 136 + 137 @@ -968,7 +968,7 @@ apps/client/src/app/pages/public/public-page.html - 44 + 45 @@ -1292,7 +1292,7 @@ Public apps/client/src/app/pages/account/create-or-update-access-dialog/create-or-update-access-dialog.html - 8 + 19 @@ -1506,7 +1506,7 @@ apps/client/src/app/pages/public/public-page.html - 75 + 76 @@ -1599,7 +1599,7 @@ apps/client/src/app/pages/public/public-page.html - 13 + 14 @@ -1829,32 +1829,25 @@ 12 - - Hello, someone has shared a Portfolio with you! - - apps/client/src/app/pages/public/public-page.html - 4,6 - - Currencies apps/client/src/app/pages/public/public-page.html - 29 + 30 Continents apps/client/src/app/pages/public/public-page.html - 59 + 60 Ghostfolio empowers you to keep track of your wealth. apps/client/src/app/pages/public/public-page.html - 131,133 + 132,134 @@ -2107,7 +2100,7 @@ apps/client/src/app/pages/public/public-page.html - 89 + 90 @@ -2147,7 +2140,7 @@ apps/client/src/app/pages/public/public-page.html - 107 + 108 @@ -2158,7 +2151,7 @@ apps/client/src/app/pages/public/public-page.html - 98 + 99 @@ -2348,6 +2341,24 @@ 291 + + Hello, has shared a Portfolio with you! + + apps/client/src/app/pages/public/public-page.html + 4,7 + + + + Alias + + apps/client/src/app/components/access-table/access-table.component.html + 3 + + + apps/client/src/app/pages/account/create-or-update-access-dialog/create-or-update-access-dialog.html + 6 + + \ No newline at end of file diff --git a/libs/common/src/lib/interfaces/access.interface.ts b/libs/common/src/lib/interfaces/access.interface.ts index b1b827f7d..27503c872 100644 --- a/libs/common/src/lib/interfaces/access.interface.ts +++ b/libs/common/src/lib/interfaces/access.interface.ts @@ -1,5 +1,6 @@ export interface Access { - granteeAlias: string; + alias?: string; + grantee: string; id: string; type: 'PUBLIC' | 'RESTRICTED_VIEW'; } diff --git a/libs/common/src/lib/interfaces/portfolio-public-details.interface.ts b/libs/common/src/lib/interfaces/portfolio-public-details.interface.ts index a8a96030b..6ecb1469a 100644 --- a/libs/common/src/lib/interfaces/portfolio-public-details.interface.ts +++ b/libs/common/src/lib/interfaces/portfolio-public-details.interface.ts @@ -1,6 +1,7 @@ import { PortfolioPosition } from '@ghostfolio/common/interfaces'; export interface PortfolioPublicDetails { + alias?: string; hasDetails: boolean; holdings: { [symbol: string]: Pick< diff --git a/prisma/migrations/20220827074920_added_alias_to_access/migration.sql b/prisma/migrations/20220827074920_added_alias_to_access/migration.sql new file mode 100644 index 000000000..6d5b5bb09 --- /dev/null +++ b/prisma/migrations/20220827074920_added_alias_to_access/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "Access" ADD COLUMN "alias" TEXT; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 6009f4544..364e71940 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -10,6 +10,7 @@ datasource db { } model Access { + alias String? createdAt DateTime @default(now()) granteeUserId String? id String @id @default(uuid())
Alias + {{ element.alias }} + Grantee - {{ element.granteeAlias }} + {{ element.grantee }}