Skip to content

Commit f616e01

Browse files
authored
Add remaining Maskinporten consumer functionality (#2211)
* Add remaining consumer BFF endpoints & refactor Supplier endpoints for consistency * Refactor Maskinporten API to clarify consumer party context in endpoints and tests * Add consumer page * Refactor Consumer and Supplier pages * Use backUrl constant and add resource mutation * Refactor Consumer and Supplier pages to improve backUrl handling and error state management; add DelegatedResourcesSection styles. * Enhance Consumer and Supplier pages with modal support for resource actions; refactor DelegatedResourcesSection to accept editModal as a prop * slett * Extract EnrichResourcePermissions helper * qa
1 parent c4f0412 commit f616e01

27 files changed

Lines changed: 1246 additions & 520 deletions

File tree

backend/src/Altinn.AccessManagement.UI/Altinn.AccessManagement.UI.Core/ClientInterfaces/IMaskinportenClient.cs

Lines changed: 42 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -10,77 +10,78 @@ namespace Altinn.AccessManagement.UI.Core.ClientInterfaces
1010
public interface IMaskinportenClient
1111
{
1212
/// <summary>
13-
/// Gets Maskinporten suppliers for a party, optionally filtered to a single supplier by org number.
13+
/// Gets Maskinporten suppliers for a consumer party, optionally filtered to a single supplier by org number.
1414
/// </summary>
15-
/// <param name="party">The party uuid.</param>
15+
/// <param name="party">The consumer party uuid.</param>
1616
/// <param name="supplier">Optional supplier org number to filter by.</param>
1717
/// <param name="cancellationToken">Cancellation token.</param>
1818
/// <returns>A collection of suppliers.</returns>
1919
Task<IEnumerable<MaskinportenConnection>> GetSuppliers(Guid party, string supplier = null, CancellationToken cancellationToken = default);
2020

2121
/// <summary>
22-
/// Performs a delegation check for a Maskinporten scope resource.
22+
/// Performs a delegation check for a Maskinporten scope resource from a consumer party.
2323
/// </summary>
24-
/// <param name="party">The party uuid.</param>
24+
/// <param name="party">The consumer party uuid.</param>
2525
/// <param name="resource">The resource identifier.</param>
2626
/// <param name="languageCode">The language code.</param>
2727
/// <param name="cancellationToken">Cancellation token.</param>
2828
/// <returns>The resource delegation check.</returns>
2929
Task<ResourceCheckDto> ResourceDelegationCheck(Guid party, string resource, string languageCode, CancellationToken cancellationToken = default);
3030

3131
/// <summary>
32-
/// Delegates a Maskinporten scope resource to a supplier.
32+
/// Delegates a Maskinporten scope resource from a consumer party to a supplier.
3333
/// </summary>
34-
/// <param name="party">The party uuid.</param>
34+
/// <param name="party">The consumer party uuid.</param>
3535
/// <param name="supplier">The supplier organization number.</param>
3636
/// <param name="resource">The resource identifier.</param>
3737
/// <param name="cancellationToken">Cancellation token.</param>
3838
/// <returns>Whether the resource was delegated.</returns>
39-
Task<bool> AddResource(Guid party, string supplier, string resource, CancellationToken cancellationToken = default);
39+
Task<bool> AddSupplierResource(Guid party, string supplier, string resource, CancellationToken cancellationToken = default);
4040

4141
/// <summary>
42-
/// Gets delegated Maskinporten scope resources.
42+
/// Gets Maskinporten scope resources delegated from a consumer party to suppliers.
4343
/// </summary>
44-
/// <param name="party">The party uuid.</param>
44+
/// <param name="party">The consumer party uuid.</param>
4545
/// <param name="languageCode">The language code.</param>
4646
/// <param name="supplier">Optional supplier organization number.</param>
4747
/// <param name="resource">Optional resource identifier.</param>
4848
/// <param name="cancellationToken">Cancellation token.</param>
4949
/// <returns>A collection of delegated resources.</returns>
50-
Task<IEnumerable<ResourcePermission>> GetResources(Guid party, string languageCode, string supplier = null, string resource = null, CancellationToken cancellationToken = default);
50+
Task<IEnumerable<ResourcePermission>> GetSupplierResources(Guid party, string languageCode, string supplier = null, string resource = null, CancellationToken cancellationToken = default);
5151

5252
/// <summary>
53-
/// Removes a delegated Maskinporten scope resource from a supplier.
53+
/// Removes a Maskinporten scope resource delegated from a consumer party to a supplier.
5454
/// </summary>
55-
/// <param name="party">The party uuid.</param>
55+
/// <param name="party">The consumer party uuid.</param>
5656
/// <param name="supplier">The supplier organization number.</param>
5757
/// <param name="resource">The resource identifier.</param>
5858
/// <param name="cancellationToken">Cancellation token.</param>
59-
Task RemoveResource(Guid party, string supplier, string resource, CancellationToken cancellationToken = default);
59+
Task RemoveSupplierResource(Guid party, string supplier, string resource, CancellationToken cancellationToken = default);
6060

6161
/// <summary>
62-
/// Adds a Maskinporten supplier for a party.
62+
/// Adds a Maskinporten supplier for a consumer party.
6363
/// </summary>
64-
/// <param name="party">The party uuid.</param>
64+
/// <param name="party">The consumer party uuid.</param>
6565
/// <param name="supplier">The supplier organization number.</param>
6666
/// <param name="cancellationToken">Cancellation token.</param>
6767
/// <returns>The created assignment.</returns>
6868
Task<AssignmentDto> AddSupplier(Guid party, string supplier, CancellationToken cancellationToken = default);
6969

7070
/// <summary>
71-
/// Gets all Maskinporten consumers for a party.
71+
/// Gets Maskinporten consumers for a supplier party, optionally filtered to a single consumer by org number.
7272
/// </summary>
73-
/// <param name="party">The party uuid.</param>
73+
/// <param name="party">The supplier party uuid.</param>
74+
/// <param name="consumer">Optional consumer org number to filter by.</param>
7475
/// <param name="cancellationToken">Cancellation token.</param>
7576
/// <returns>A collection of consumers.</returns>
76-
Task<IEnumerable<MaskinportenConnection>> GetConsumers(Guid party, CancellationToken cancellationToken = default);
77+
Task<IEnumerable<MaskinportenConnection>> GetConsumers(Guid party, string consumer = null, CancellationToken cancellationToken = default);
7778

7879
/// <summary>
79-
/// Removes a Maskinporten supplier for a party.
80+
/// Removes a Maskinporten supplier from a consumer party.
8081
/// </summary>
81-
/// <param name="party">The party uuid.</param>
82+
/// <param name="party">The consumer party uuid.</param>
8283
/// <param name="supplier">The supplier organization number.</param>
83-
/// <param name="cascade">Whether to also remove all delegated resources.</param>
84+
/// <param name="cascade">Whether to also remove resources delegated to the supplier.</param>
8485
/// <param name="cancellationToken">Cancellation token.</param>
8586
Task RemoveSupplier(Guid party, string supplier, bool cascade = false, CancellationToken cancellationToken = default);
8687

@@ -89,8 +90,27 @@ public interface IMaskinportenClient
8990
/// </summary>
9091
/// <param name="party">The party uuid (the supplier).</param>
9192
/// <param name="consumer">The consumer organization number.</param>
92-
/// <param name="cascade">Whether to also remove all delegated resources.</param>
93+
/// <param name="cascade">Whether to also remove resources received from the consumer.</param>
9394
/// <param name="cancellationToken">Cancellation token.</param>
9495
Task RemoveConsumer(Guid party, string consumer, bool cascade = false, CancellationToken cancellationToken = default);
96+
97+
/// <summary>
98+
/// Gets Maskinporten scope resources delegated from consumers to the supplier party.
99+
/// </summary>
100+
/// <param name="party">The party uuid (the supplier).</param>
101+
/// <param name="languageCode">The language code.</param>
102+
/// <param name="consumer">Optional consumer organization number.</param>
103+
/// <param name="cancellationToken">Cancellation token.</param>
104+
/// <returns>A collection of resources received by the supplier.</returns>
105+
Task<IEnumerable<ResourcePermission>> GetConsumerResources(Guid party, string languageCode, string consumer = null, CancellationToken cancellationToken = default);
106+
107+
/// <summary>
108+
/// Removes a Maskinporten scope resource received by the supplier from a consumer.
109+
/// </summary>
110+
/// <param name="party">The party uuid (the supplier).</param>
111+
/// <param name="consumer">The consumer organization number.</param>
112+
/// <param name="resource">The resource identifier.</param>
113+
/// <param name="cancellationToken">Cancellation token.</param>
114+
Task RemoveConsumerResource(Guid party, string consumer, string resource, CancellationToken cancellationToken = default);
95115
}
96116
}

backend/src/Altinn.AccessManagement.UI/Altinn.AccessManagement.UI.Core/Services/Interfaces/IMaskinportenService.cs

Lines changed: 42 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ namespace Altinn.AccessManagement.UI.Core.Services.Interfaces
1212
public interface IMaskinportenService
1313
{
1414
/// <summary>
15-
/// Gets Maskinporten suppliers for a party, optionally filtered to a single supplier by org number.
15+
/// Gets Maskinporten suppliers for a consumer party, optionally filtered to a single supplier by org number.
1616
/// </summary>
17-
/// <param name="party">The party uuid.</param>
17+
/// <param name="party">The consumer party uuid.</param>
1818
/// <param name="supplier">Optional supplier org number to filter by.</param>
1919
/// <param name="cancellationToken">Cancellation token.</param>
2020
/// <returns>A collection of suppliers.</returns>
@@ -30,68 +30,69 @@ public interface IMaskinportenService
3030
Task<PaginatedList<ServiceResourceFE>> SearchScopes(string languageCode, PaginatedSearchParams searchParams, CancellationToken cancellationToken = default);
3131

3232
/// <summary>
33-
/// Performs a delegation check for a Maskinporten scope resource.
33+
/// Performs a delegation check for a Maskinporten scope resource from a consumer party.
3434
/// </summary>
35-
/// <param name="party">The party uuid.</param>
35+
/// <param name="party">The consumer party uuid.</param>
3636
/// <param name="resource">The resource identifier.</param>
3737
/// <param name="languageCode">The language code.</param>
3838
/// <param name="cancellationToken">Cancellation token.</param>
3939
/// <returns>The resource delegation check.</returns>
4040
Task<ResourceCheckDto> ResourceDelegationCheck(Guid party, string resource, string languageCode, CancellationToken cancellationToken = default);
4141

4242
/// <summary>
43-
/// Delegates a Maskinporten scope resource to a supplier.
43+
/// Delegates a Maskinporten scope resource from a consumer party to a supplier.
4444
/// </summary>
45-
/// <param name="party">The party uuid.</param>
45+
/// <param name="party">The consumer party uuid.</param>
4646
/// <param name="supplier">The supplier organization number.</param>
4747
/// <param name="resource">The resource identifier.</param>
4848
/// <param name="cancellationToken">Cancellation token.</param>
4949
/// <returns>Whether the resource was delegated.</returns>
50-
Task<bool> AddResource(Guid party, string supplier, string resource, CancellationToken cancellationToken = default);
50+
Task<bool> AddSupplierResource(Guid party, string supplier, string resource, CancellationToken cancellationToken = default);
5151

5252
/// <summary>
53-
/// Gets delegated Maskinporten scope resources.
53+
/// Gets Maskinporten scope resources delegated from a consumer party to suppliers.
5454
/// </summary>
5555
/// <param name="languageCode">The language code.</param>
56-
/// <param name="party">The party uuid.</param>
56+
/// <param name="party">The consumer party uuid.</param>
5757
/// <param name="supplier">Optional supplier organization number.</param>
5858
/// <param name="resource">Optional resource identifier.</param>
5959
/// <param name="cancellationToken">Cancellation token.</param>
6060
/// <returns>A collection of delegated resources.</returns>
61-
Task<List<ResourceDelegation>> GetResources(string languageCode, Guid party, string supplier = null, string resource = null, CancellationToken cancellationToken = default);
61+
Task<List<ResourceDelegation>> GetSupplierResources(string languageCode, Guid party, string supplier = null, string resource = null, CancellationToken cancellationToken = default);
6262

6363
/// <summary>
64-
/// Removes a delegated Maskinporten scope resource from a supplier.
64+
/// Removes a Maskinporten scope resource delegated from a consumer party to a supplier.
6565
/// </summary>
66-
/// <param name="party">The party uuid.</param>
66+
/// <param name="party">The consumer party uuid.</param>
6767
/// <param name="supplier">The supplier organization number.</param>
6868
/// <param name="resource">The resource identifier.</param>
6969
/// <param name="cancellationToken">Cancellation token.</param>
70-
Task RemoveResource(Guid party, string supplier, string resource, CancellationToken cancellationToken = default);
70+
Task RemoveSupplierResource(Guid party, string supplier, string resource, CancellationToken cancellationToken = default);
7171

7272
/// <summary>
73-
/// Adds a Maskinporten supplier for a party.
73+
/// Adds a Maskinporten supplier for a consumer party.
7474
/// </summary>
75-
/// <param name="party">The party uuid.</param>
75+
/// <param name="party">The consumer party uuid.</param>
7676
/// <param name="supplier">The supplier organization number.</param>
7777
/// <param name="cancellationToken">Cancellation token.</param>
7878
/// <returns>The created assignment.</returns>
7979
Task<AssignmentDto> AddSupplier(Guid party, string supplier, CancellationToken cancellationToken = default);
8080

8181
/// <summary>
82-
/// Gets all Maskinporten consumers for a party.
82+
/// Gets Maskinporten consumers for a supplier party, optionally filtered to a single consumer by org number.
8383
/// </summary>
84-
/// <param name="party">The party uuid.</param>
84+
/// <param name="party">The supplier party uuid.</param>
85+
/// <param name="consumer">Optional consumer org number to filter by.</param>
8586
/// <param name="cancellationToken">Cancellation token.</param>
8687
/// <returns>A collection of consumers.</returns>
87-
Task<IEnumerable<MaskinportenConnection>> GetConsumers(Guid party, CancellationToken cancellationToken = default);
88+
Task<IEnumerable<MaskinportenConnection>> GetConsumers(Guid party, string consumer = null, CancellationToken cancellationToken = default);
8889

8990
/// <summary>
90-
/// Removes a Maskinporten supplier for a party.
91+
/// Removes a Maskinporten supplier from a consumer party.
9192
/// </summary>
92-
/// <param name="party">The party uuid.</param>
93+
/// <param name="party">The consumer party uuid.</param>
9394
/// <param name="supplier">The supplier organization number.</param>
94-
/// <param name="cascade">Whether to also remove all delegated resources.</param>
95+
/// <param name="cascade">Whether to also remove resources delegated to the supplier.</param>
9596
/// <param name="cancellationToken">Cancellation token.</param>
9697
Task RemoveSupplier(Guid party, string supplier, bool cascade = false, CancellationToken cancellationToken = default);
9798

@@ -100,8 +101,27 @@ public interface IMaskinportenService
100101
/// </summary>
101102
/// <param name="party">The party uuid (the supplier).</param>
102103
/// <param name="consumer">The consumer organization number.</param>
103-
/// <param name="cascade">Whether to also remove all delegated resources.</param>
104+
/// <param name="cascade">Whether to also remove resources received from the consumer.</param>
104105
/// <param name="cancellationToken">Cancellation token.</param>
105106
Task RemoveConsumer(Guid party, string consumer, bool cascade = false, CancellationToken cancellationToken = default);
107+
108+
/// <summary>
109+
/// Gets Maskinporten scope resources delegated from consumers to the supplier party.
110+
/// </summary>
111+
/// <param name="languageCode">The language code.</param>
112+
/// <param name="party">The party uuid (the supplier).</param>
113+
/// <param name="consumer">Optional consumer organization number.</param>
114+
/// <param name="cancellationToken">Cancellation token.</param>
115+
/// <returns>A collection of resources received by the supplier.</returns>
116+
Task<List<ResourceDelegation>> GetConsumerResources(string languageCode, Guid party, string consumer = null, CancellationToken cancellationToken = default);
117+
118+
/// <summary>
119+
/// Removes a Maskinporten scope resource received by the supplier from a consumer.
120+
/// </summary>
121+
/// <param name="party">The party uuid (the supplier).</param>
122+
/// <param name="consumer">The consumer organization number.</param>
123+
/// <param name="resource">The resource identifier.</param>
124+
/// <param name="cancellationToken">Cancellation token.</param>
125+
Task RemoveConsumerResource(Guid party, string consumer, string resource, CancellationToken cancellationToken = default);
106126
}
107127
}

0 commit comments

Comments
 (0)