Updated ciam prod client-id

This commit is contained in:
Erik Tiekstra
2021-09-09 10:51:32 +02:00
parent 809d67e4e8
commit 7a60a39b1e
5 changed files with 99 additions and 102 deletions

View File

@@ -36,80 +36,82 @@
></digi-ng-progress-progressbar> ></digi-ng-progress-progressbar>
</div> </div>
</div> </div>
<div class="avrop__content"> <ng-container *ngIf="avropData$ | async as avropData">
<div class="avrop__filter" *ngIf="currentStep === 1"> <div class="avrop__content" *ngIf="avropData.data.length; else noAvrop">
<h3>Filter</h3> <div class="avrop__filter" *ngIf="currentStep === 1">
<msfa-avrop-filters></msfa-avrop-filters> <h3>Filter</h3>
</div> <msfa-avrop-filters></msfa-avrop-filters>
<div class="avrop__select-handledare" *ngIf="currentStep === 2"> </div>
<ng-container *ngIf="availableHandledare$ | async as availableHandledare; else loadingRef"> <div class="avrop__select-handledare" *ngIf="currentStep === 2">
<digi-form-select <ng-container *ngIf="availableHandledare$ | async as availableHandledare; else loadingRef">
*ngIf="availableHandledare?.length; else noAvailabeHandledare" <digi-form-select
af-label="Välj handledare att tilldela" *ngIf="availableHandledare?.length; else noAvailabeHandledare"
af-placeholder="Välj handledare" af-label="Välj handledare att tilldela"
[afRequired]="true" af-placeholder="Välj handledare"
(afOnChange)="changeHandledare($event.detail)" [afRequired]="true"
> (afOnChange)="changeHandledare($event.detail)"
<option
*ngFor="let availableHandledare of availableHandledare"
[value]="availableHandledare.ciamUserId"
> >
{{ availableHandledare.fullName }} <option
</option> *ngFor="let availableHandledare of availableHandledare"
</digi-form-select> [value]="availableHandledare.ciamUserId"
>
{{ availableHandledare.fullName }}
</option>
</digi-form-select>
<ng-template #noAvailableHandledare> <ng-template #noAvailableHandledare>
<p>Inga handledare har behörighet till markerade deltagare</p> <p>Inga handledare har behörighet till markerade deltagare</p>
</ng-template> </ng-template>
</ng-container> </ng-container>
</div>
<h3>Välj deltagare att tilldela handledare</h3>
<msfa-avrop-list
[availableAvrop]="avropData.data"
[paginationMeta]="avropData.meta"
[selectedAvrop]="selectedAvrop$ | async"
[isLocked]="avropIsLocked$ | async"
[isSubmitted]="avropIsSubmitted$ | async"
[handledare]="selectedHandledare$ | async"
[handledareConfirmed]="handledareConfirmed$ | async"
(selectionChanged)="updateSelectedAvrop($event)"
(paginated)="setNewPage($event)"
></msfa-avrop-list>
</div> </div>
<h3>Välj deltagare att tilldela handledare</h3> <div class="avrop__footer" *ngIf="avropData.data.length" [ngSwitch]="currentStep">
<msfa-avrop-list <digi-notification-alert
*ngIf="avropData$ | async as avropData" *ngIf="error$ | async as error"
[availableAvrop]="avropData.data" af-heading="Felmeddelande"
[paginationMeta]="avropData.meta" af-variation="danger"
[selectedAvrop]="selectedAvrop$ | async" af-closeable="true"
[isLocked]="avropIsLocked$ | async" (afOnClose)="resetError()"
[isSubmitted]="avropIsSubmitted$ | async" >
[handledare]="selectedHandledare$ | async" <p>{{error}}</p>
[handledareConfirmed]="handledareConfirmed$ | async" </digi-notification-alert>
(selectionChanged)="updateSelectedAvrop($event)"
(paginated)="setNewPage($event)"
></msfa-avrop-list>
</div>
<div class="avrop__footer" [ngSwitch]="currentStep">
<digi-notification-alert
*ngIf="error$ | async as error"
af-heading="Felmeddelande"
af-variation="danger"
af-closeable="true"
(afOnClose)="resetError()"
>
<p>{{error}}</p>
</digi-notification-alert>
<div class="avrop__cta-wrapper"> <div class="avrop__cta-wrapper">
<ng-container *ngSwitchCase="1"> <ng-container *ngSwitchCase="1">
<digi-button af-size="m" (afOnClick)="lockSelectedAvrop()">Nästa</digi-button> <digi-button af-size="m" (afOnClick)="lockSelectedAvrop()">Nästa</digi-button>
</ng-container> </ng-container>
<ng-container *ngSwitchCase="2"> <ng-container *ngSwitchCase="2">
<digi-button af-variation="secondary" af-size="m" (afOnClick)="unlockSelectedAvrop()" <digi-button af-variation="secondary" af-size="m" (afOnClick)="unlockSelectedAvrop()"
>Tillbaka</digi-button >Tillbaka</digi-button
> >
<digi-button af-size="m" (afOnClick)="confirmHandledare()">Tilldela</digi-button> <digi-button af-size="m" (afOnClick)="confirmHandledare()">Tilldela</digi-button>
</ng-container> </ng-container>
<ng-container *ngSwitchCase="3"> <ng-container *ngSwitchCase="3">
<digi-button af-variation="secondary" af-size="m" (afOnClick)="unconfirmHandledare()" <digi-button af-variation="secondary" af-size="m" (afOnClick)="unconfirmHandledare()"
>Tillbaka</digi-button >Tillbaka</digi-button
> >
<digi-button af-size="m" (afOnClick)="save()">Bekräfta tilldelning</digi-button> <digi-button af-size="m" (afOnClick)="save()">Bekräfta tilldelning</digi-button>
</ng-container> </ng-container>
<ng-container *ngSwitchCase="4"> <ng-container *ngSwitchCase="4">
<digi-button af-size="m" (afOnClick)="returnToStep1()">Tillbaka till nya deltagare</digi-button> <digi-button af-size="m" (afOnClick)="returnToStep1()">Tillbaka till nya deltagare</digi-button>
</ng-container> </ng-container>
</div>
</div> </div>
</div> </ng-container>
</main> </main>
</digi-typography> </digi-typography>
</section> </section>
@@ -120,4 +122,7 @@
<ng-template #noAvailabeHandledare> <ng-template #noAvailabeHandledare>
<!-- lägg in lämpligt innehåll --> <!-- lägg in lämpligt innehåll -->
</ng-template> </ng-template>
<ng-template #noAvrop>
<p>Det finns för tillfället inga nya deltagare att tilldela.</p>
</ng-template>
</msfa-layout> </msfa-layout>

View File

@@ -1,3 +1,4 @@
import { mapStringToSsn } from '@msfa-utils/map-string-to-ssn.util';
import { Address, mapResponseToAddress } from './address.model'; import { Address, mapResponseToAddress } from './address.model';
import { ContactInformationResponse } from './api/contact-information.response.model'; import { ContactInformationResponse } from './api/contact-information.response.model';
import { mapResponseToPhoneNumber, PhoneNumber } from './phonenumber.model'; import { mapResponseToPhoneNumber, PhoneNumber } from './phonenumber.model';
@@ -12,23 +13,15 @@ export interface ContactInformation {
addresses: Address[]; addresses: Address[];
} }
export function mapResponseToContactInformation(contactInformation: ContactInformationResponse): ContactInformation { export function mapResponseToContactInformation(data: ContactInformationResponse): ContactInformation {
const { fornamn, efternamn, personnummer, epost, telekomadresser, adresser } = data;
return { return {
firstName: contactInformation.fornamn, firstName: fornamn || '',
lastName: contactInformation.efternamn, lastName: efternamn || '',
fullName: `${contactInformation.fornamn} ${contactInformation.efternamn}`, fullName: fornamn && efternamn ? `${fornamn} ${efternamn}` : '',
ssn: `${contactInformation.personnummer.substring( ssn: personnummer ? mapStringToSsn(personnummer) : '',
0, email: epost || '',
contactInformation.personnummer.length - 4 phoneNumbers: telekomadresser ? telekomadresser.map(phoneNumber => mapResponseToPhoneNumber(phoneNumber)) : [],
)}-${contactInformation.personnummer.substring(contactInformation.personnummer.length - 4)}`, addresses: adresser ? adresser.map(address => mapResponseToAddress(address)) : null,
email: contactInformation.epost,
phoneNumbers: contactInformation.telekomadresser
? contactInformation.telekomadresser.map(phoneNumber => {
return mapResponseToPhoneNumber(phoneNumber);
})
: [],
addresses: contactInformation.adresser
? contactInformation.adresser.map(address => mapResponseToAddress(address))
: null,
}; };
} }

View File

@@ -1,4 +1,5 @@
import { RoleEnum } from '@msfa-enums/role.enum'; import { RoleEnum } from '@msfa-enums/role.enum';
import { mapStringToSsn } from '@msfa-utils/map-string-to-ssn.util';
import { EmployeeCompactResponse, EmployeeResponse } from './api/employee.response.model'; import { EmployeeCompactResponse, EmployeeResponse } from './api/employee.response.model';
import { EmployeeTjanst, mapResponseToEmployeeTjanst } from './employee-tjanst.model'; import { EmployeeTjanst, mapResponseToEmployeeTjanst } from './employee-tjanst.model';
import { import {
@@ -7,8 +8,6 @@ import {
} from './employee-utforande-verksamhet.model'; } from './employee-utforande-verksamhet.model';
import { PaginationMeta } from './pagination-meta.model'; import { PaginationMeta } from './pagination-meta.model';
const CURRENT_YEAR = new Date().getFullYear().toString().slice(2, 4);
export interface EmployeeCompact { export interface EmployeeCompact {
id: string; id: string;
fullName: string; fullName: string;
@@ -16,7 +15,6 @@ export interface EmployeeCompact {
allaUtforandeVerksamheter: boolean; allaUtforandeVerksamheter: boolean;
utforandeVerksamheter: string[]; utforandeVerksamheter: string[];
} }
export interface Employee { export interface Employee {
id: string; id: string;
firstName: string; firstName: string;
@@ -35,18 +33,6 @@ export interface EmployeesData {
meta: PaginationMeta; meta: PaginationMeta;
} }
function mapResponseToSsn(ssn: string): string {
ssn = ssn.replaceAll('-', '');
if (ssn.length === 10) {
const century = +CURRENT_YEAR - +ssn.slice(0, 2) > 0 ? '20' : '19';
ssn = ssn.padStart(12, century);
}
if (ssn.length === 12) {
ssn = `${ssn.slice(0, 8)}-${ssn.slice(8, 12)}`;
}
return ssn;
}
export function mapResponseToEmployeeCompact(data: EmployeeCompactResponse): EmployeeCompact { export function mapResponseToEmployeeCompact(data: EmployeeCompactResponse): EmployeeCompact {
const { ciamUserId, name, tjanst, allaUtforandeVerksamheter, utforandeVerksamhet } = data; const { ciamUserId, name, tjanst, allaUtforandeVerksamheter, utforandeVerksamhet } = data;
return { return {
@@ -76,7 +62,7 @@ export function mapResponseToEmployee(data: EmployeeResponse): Employee {
lastName, lastName,
fullName: `${firstName} ${lastName}`, fullName: `${firstName} ${lastName}`,
email, email,
ssn: ssn ? mapResponseToSsn(ssn) : null, ssn: ssn ? mapStringToSsn(ssn) : null,
roles: roles || [], roles: roles || [],
tjanster: tjanster?.map(tjanst => mapResponseToEmployeeTjanst(tjanst)), tjanster: tjanster?.map(tjanst => mapResponseToEmployeeTjanst(tjanst)),
allaUtforandeVerksamheter, allaUtforandeVerksamheter,

View File

@@ -0,0 +1,13 @@
const CURRENT_YEAR = new Date().getFullYear().toString().slice(2, 4);
export function mapStringToSsn(ssn: string): string {
ssn = ssn.replaceAll('-', '');
if (ssn.length === 10) {
const century = +CURRENT_YEAR - +ssn.slice(0, 2) > 0 ? '20' : '19';
ssn = ssn.padStart(12, century);
}
if (ssn.length === 12) {
ssn = `${ssn.slice(0, 8)}-${ssn.slice(8, 12)}`;
}
return ssn;
}

View File

@@ -2,7 +2,7 @@ import { Environment } from '@msfa-models/environment.model';
export const environment: Environment = { export const environment: Environment = {
environment: 'prod', environment: 'prod',
clientId: '', clientId: '71010833-e445-4bbc-926a-775247b7a6e3',
loginUrl: 'https://ciam.arbetsformedlingen.se/uas/oauth2/authorization?response_type=code&scope=openid', loginUrl: 'https://ciam.arbetsformedlingen.se/uas/oauth2/authorization?response_type=code&scope=openid',
logoutUrl: 'https://ciam.arbetsformedlingen.se/uas/logout', logoutUrl: 'https://ciam.arbetsformedlingen.se/uas/logout',
production: true, production: true,