@idea-ionic/auth 8.12.0 → 8.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1647,7 +1647,7 @@ class IDEASignInPage {
1647
1647
  testId="signin.email"
1648
1648
  type="email"
1649
1649
  inputmode="email"
1650
- pattern="[A-Za-z0-9._%+-]{2,}@[a-zA-Z-_.]{2,}[.]{1}[a-zA-Z]{2,}"
1650
+ pattern="[A-Za-z0-9._%+\\-]{2,}@[a-zA-Z\\-_.]{2,}[.]{1}[a-zA-Z]{2,}"
1651
1651
  spellcheck="false"
1652
1652
  autocorrect="off"
1653
1653
  autocomplete="email"
@@ -1862,7 +1862,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImpor
1862
1862
  testId="signin.email"
1863
1863
  type="email"
1864
1864
  inputmode="email"
1865
- pattern="[A-Za-z0-9._%+-]{2,}@[a-zA-Z-_.]{2,}[.]{1}[a-zA-Z]{2,}"
1865
+ pattern="[A-Za-z0-9._%+\\-]{2,}@[a-zA-Z\\-_.]{2,}[.]{1}[a-zA-Z]{2,}"
1866
1866
  spellcheck="false"
1867
1867
  autocorrect="off"
1868
1868
  autocomplete="email"
@@ -2189,7 +2189,7 @@ class IDEASignUpPage {
2189
2189
  testId="signup.email"
2190
2190
  type="email"
2191
2191
  inputmode="email"
2192
- pattern="[A-Za-z0-9._%+-]{2,}@[a-zA-Z-_.]{2,}[.]{1}[a-zA-Z]{2,}"
2192
+ pattern="[A-Za-z0-9._%+\\-]{2,}@[a-zA-Z\\-_.]{2,}[.]{1}[a-zA-Z]{2,}"
2193
2193
  spellcheck="false"
2194
2194
  autocorrect="off"
2195
2195
  autocomplete="off"
@@ -2347,7 +2347,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImpor
2347
2347
  testId="signup.email"
2348
2348
  type="email"
2349
2349
  inputmode="email"
2350
- pattern="[A-Za-z0-9._%+-]{2,}@[a-zA-Z-_.]{2,}[.]{1}[a-zA-Z]{2,}"
2350
+ pattern="[A-Za-z0-9._%+\\-]{2,}@[a-zA-Z\\-_.]{2,}[.]{1}[a-zA-Z]{2,}"
2351
2351
  spellcheck="false"
2352
2352
  autocorrect="off"
2353
2353
  autocomplete="off"
@@ -2723,7 +2723,7 @@ class IDEAResendLinkPage {
2723
2723
  testId="resendlink.email"
2724
2724
  type="email"
2725
2725
  inputmode="email"
2726
- pattern="[A-Za-z0-9._%+-]{2,}@[a-zA-Z-_.]{2,}[.]{1}[a-zA-Z]{2,}"
2726
+ pattern="[A-Za-z0-9._%+\\-]{2,}@[a-zA-Z\\-_.]{2,}[.]{1}[a-zA-Z]{2,}"
2727
2727
  spellcheck="false"
2728
2728
  autocorrect="off"
2729
2729
  autocomplete="email"
@@ -2798,7 +2798,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImpor
2798
2798
  testId="resendlink.email"
2799
2799
  type="email"
2800
2800
  inputmode="email"
2801
- pattern="[A-Za-z0-9._%+-]{2,}@[a-zA-Z-_.]{2,}[.]{1}[a-zA-Z]{2,}"
2801
+ pattern="[A-Za-z0-9._%+\\-]{2,}@[a-zA-Z\\-_.]{2,}[.]{1}[a-zA-Z]{2,}"
2802
2802
  spellcheck="false"
2803
2803
  autocorrect="off"
2804
2804
  autocomplete="email"
@@ -2879,7 +2879,7 @@ class IDEAForgotPasswordPage {
2879
2879
  testId="forgotpassword.email"
2880
2880
  type="email"
2881
2881
  inputmode="email"
2882
- pattern="[A-Za-z0-9._%+-]{2,}@[a-zA-Z-_.]{2,}[.]{1}[a-zA-Z]{2,}"
2882
+ pattern="[A-Za-z0-9._%+\\-]{2,}@[a-zA-Z\\-_.]{2,}[.]{1}[a-zA-Z]{2,}"
2883
2883
  spellcheck="false"
2884
2884
  autocorrect="off"
2885
2885
  autocomplete="email"
@@ -2957,7 +2957,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImpor
2957
2957
  testId="forgotpassword.email"
2958
2958
  type="email"
2959
2959
  inputmode="email"
2960
- pattern="[A-Za-z0-9._%+-]{2,}@[a-zA-Z-_.]{2,}[.]{1}[a-zA-Z]{2,}"
2960
+ pattern="[A-Za-z0-9._%+\\-]{2,}@[a-zA-Z\\-_.]{2,}[.]{1}[a-zA-Z]{2,}"
2961
2961
  spellcheck="false"
2962
2962
  autocorrect="off"
2963
2963
  autocomplete="email"
@@ -3085,7 +3085,7 @@ class IDEAConfirmPasswordPage {
3085
3085
  testId="confirmpassword.email"
3086
3086
  type="email"
3087
3087
  inputmode="email"
3088
- pattern="[A-Za-z0-9._%+-]{2,}@[a-zA-Z-_.]{2,}[.]{1}[a-zA-Z]{2,}"
3088
+ pattern="[A-Za-z0-9._%+\\-]{2,}@[a-zA-Z\\-_.]{2,}[.]{1}[a-zA-Z]{2,}"
3089
3089
  spellcheck="false"
3090
3090
  autocorrect="off"
3091
3091
  autocomplete="email"
@@ -3212,7 +3212,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImpor
3212
3212
  testId="confirmpassword.email"
3213
3213
  type="email"
3214
3214
  inputmode="email"
3215
- pattern="[A-Za-z0-9._%+-]{2,}@[a-zA-Z-_.]{2,}[.]{1}[a-zA-Z]{2,}"
3215
+ pattern="[A-Za-z0-9._%+\\-]{2,}@[a-zA-Z\\-_.]{2,}[.]{1}[a-zA-Z]{2,}"
3216
3216
  spellcheck="false"
3217
3217
  autocorrect="off"
3218
3218
  autocomplete="email"
@@ -1 +1 @@
1
- {"version":3,"file":"idea-ionic-auth.mjs","sources":["../../../modules/auth/src/commonPasswords.model.ts","../../../modules/auth/src/auth.service.ts","../../../modules/auth/src/signIn.page.ts","../../../modules/auth/src/passwordPolicy.component.ts","../../../modules/auth/src/signUp.page.ts","../../../modules/auth/src/newPassword.page.ts","../../../modules/auth/src/resendLink.page.ts","../../../modules/auth/src/forgotPassword.page.ts","../../../modules/auth/src/confirmPassword.page.ts","../../../modules/auth/src/mfaChallenge.page.ts","../../../modules/auth/src/setupMFA/setupMFAModal.component.ts","../../../modules/auth/src/setupMFA/setupMFAButton.component.ts","../../../modules/auth/src/setupMFA.page.ts","../../../modules/auth/src/okta.page.ts","../../../modules/auth/src/auth.routes.ts","../../../modules/auth/idea-ionic-auth.ts"],"sourcesContent":["export const COMMON_PASSWORDS_TOP_1000 = [\n '123456',\n 'password',\n '12345678',\n 'qwerty',\n '123456789',\n '12345',\n '1234',\n '111111',\n '1234567',\n 'dragon',\n '123123',\n 'baseball',\n 'abc123',\n 'football',\n 'monkey',\n 'letmein',\n '696969',\n 'shadow',\n 'master',\n '666666',\n 'qwertyuiop',\n '123321',\n 'mustang',\n '1234567890',\n 'michael',\n '654321',\n 'pussy',\n 'superman',\n '1qaz2wsx',\n '7777777',\n 'fuckyou',\n '121212',\n '000000',\n 'qazwsx',\n '123qwe',\n 'killer',\n 'trustno1',\n 'jordan',\n 'jennifer',\n 'zxcvbnm',\n 'asdfgh',\n 'hunter',\n 'buster',\n 'soccer',\n 'harley',\n 'batman',\n 'andrew',\n 'tigger',\n 'sunshine',\n 'iloveyou',\n 'fuckme',\n '2000',\n 'charlie',\n 'robert',\n 'thomas',\n 'hockey',\n 'ranger',\n 'daniel',\n 'starwars',\n 'klaster',\n '112233',\n 'george',\n 'asshole',\n 'computer',\n 'michelle',\n 'jessica',\n 'pepper',\n '1111',\n 'zxcvbn',\n '555555',\n '11111111',\n '131313',\n 'freedom',\n '777777',\n 'pass',\n 'fuck',\n 'maggie',\n '159753',\n 'aaaaaa',\n 'ginger',\n 'princess',\n 'joshua',\n 'cheese',\n 'amanda',\n 'summer',\n 'love',\n 'ashley',\n '6969',\n 'nicole',\n 'chelsea',\n 'biteme',\n 'matthew',\n 'access',\n 'yankees',\n '987654321',\n 'dallas',\n 'austin',\n 'thunder',\n 'taylor',\n 'matrix',\n 'william',\n 'corvette',\n 'hello',\n 'martin',\n 'heather',\n 'secret',\n 'fucker',\n 'merlin',\n 'diamond',\n '1234qwer',\n 'gfhjkm',\n 'hammer',\n 'silver',\n '222222',\n '88888888',\n 'anthony',\n 'justin',\n 'test',\n 'bailey',\n 'q1w2e3r4t5',\n 'patrick',\n 'internet',\n 'scooter',\n 'orange',\n '11111',\n 'golfer',\n 'cookie',\n 'richard',\n 'samantha',\n 'bigdog',\n 'guitar',\n 'jackson',\n 'whatever',\n 'mickey',\n 'chicken',\n 'sparky',\n 'snoopy',\n 'maverick',\n 'phoenix',\n 'camaro',\n 'sexy',\n 'peanut',\n 'morgan',\n 'welcome',\n 'falcon',\n 'cowboy',\n 'ferrari',\n 'samsung',\n 'andrea',\n 'smokey',\n 'steelers',\n 'joseph',\n 'mercedes',\n 'dakota',\n 'arsenal',\n 'eagles',\n 'melissa',\n 'boomer',\n 'booboo',\n 'spider',\n 'nascar',\n 'monster',\n 'tigers',\n 'yellow',\n 'xxxxxx',\n '123123123',\n 'gateway',\n 'marina',\n 'diablo',\n 'bulldog',\n 'qwer1234',\n 'compaq',\n 'purple',\n 'hardcore',\n 'banana',\n 'junior',\n 'hannah',\n '123654',\n 'porsche',\n 'lakers',\n 'iceman',\n 'money',\n 'cowboys',\n '987654',\n 'london',\n 'tennis',\n '999999',\n 'ncc1701',\n 'coffee',\n 'scooby',\n '0000',\n 'miller',\n 'boston',\n 'q1w2e3r4',\n 'fuckoff',\n 'brandon',\n 'yamaha',\n 'chester',\n 'mother',\n 'forever',\n 'johnny',\n 'edward',\n '333333',\n 'oliver',\n 'redsox',\n 'player',\n 'nikita',\n 'knight',\n 'fender',\n 'barney',\n 'midnight',\n 'please',\n 'brandy',\n 'chicago',\n 'badboy',\n 'iwantu',\n 'slayer',\n 'rangers',\n 'charles',\n 'angel',\n 'flower',\n 'bigdaddy',\n 'rabbit',\n 'wizard',\n 'bigdick',\n 'jasper',\n 'enter',\n 'rachel',\n 'chris',\n 'steven',\n 'winner',\n 'adidas',\n 'victoria',\n 'natasha',\n '1q2w3e4r',\n 'jasmine',\n 'winter',\n 'prince',\n 'panties',\n 'marine',\n 'ghbdtn',\n 'fishing',\n 'cocacola',\n 'casper',\n 'james',\n '232323',\n 'raiders',\n '888888',\n 'marlboro',\n 'gandalf',\n 'asdfasdf',\n 'crystal',\n '87654321',\n '12344321',\n 'sexsex',\n 'golden',\n 'blowme',\n 'bigtits',\n '8675309',\n 'panther',\n 'lauren',\n 'angela',\n 'bitch',\n 'spanky',\n 'thx1138',\n 'angels',\n 'madison',\n 'winston',\n 'shannon',\n 'mike',\n 'toyota',\n 'blowjob',\n 'jordan23',\n 'canada',\n 'sophie',\n 'Password',\n 'apples',\n 'dick',\n 'tiger',\n 'razz',\n '123abc',\n 'pokemon',\n 'qazxsw',\n '55555',\n 'qwaszx',\n 'muffin',\n 'johnson',\n 'murphy',\n 'cooper',\n 'jonathan',\n 'liverpoo',\n 'david',\n 'danielle',\n '159357',\n 'jackie',\n '1990',\n '123456a',\n '789456',\n 'turtle',\n 'horny',\n 'abcd1234',\n 'scorpion',\n 'qazwsxedc',\n '101010',\n 'butter',\n 'carlos',\n 'password1',\n 'dennis',\n 'slipknot',\n 'qwerty123',\n 'booger',\n 'asdf',\n '1991',\n 'black',\n 'startrek',\n '12341234',\n 'cameron',\n 'newyork',\n 'rainbow',\n 'nathan',\n 'john',\n '1992',\n 'rocket',\n 'viking',\n 'redskins',\n 'butthead',\n 'asdfghjkl',\n '1212',\n 'sierra',\n 'peaches',\n 'gemini',\n 'doctor',\n 'wilson',\n 'sandra',\n 'helpme',\n 'qwertyui',\n 'victor',\n 'florida',\n 'dolphin',\n 'pookie',\n 'captain',\n 'tucker',\n 'blue',\n 'liverpool',\n 'theman',\n 'bandit',\n 'dolphins',\n 'maddog',\n 'packers',\n 'jaguar',\n 'lovers',\n 'nicholas',\n 'united',\n 'tiffany',\n 'maxwell',\n 'zzzzzz',\n 'nirvana',\n 'jeremy',\n 'suckit',\n 'stupid',\n 'porn',\n 'monica',\n 'elephant',\n 'giants',\n 'jackass',\n 'hotdog',\n 'rosebud',\n 'success',\n 'debbie',\n 'mountain',\n '444444',\n 'xxxxxxxx',\n 'warrior',\n '1q2w3e4r5t',\n 'q1w2e3',\n '123456q',\n 'albert',\n 'metallic',\n 'lucky',\n 'azerty',\n '7777',\n 'shithead',\n 'alex',\n 'bond007',\n 'alexis',\n '1111111',\n 'samson',\n '5150',\n 'willie',\n 'scorpio',\n 'bonnie',\n 'gators',\n 'benjamin',\n 'voodoo',\n 'driver',\n 'dexter',\n '2112',\n 'jason',\n 'calvin',\n 'freddy',\n '212121',\n 'creative',\n '12345a',\n 'sydney',\n 'rush2112',\n '1989',\n 'asdfghjk',\n 'red123',\n 'bubba',\n '4815162342',\n 'passw0rd',\n 'trouble',\n 'gunner',\n 'happy',\n 'fucking',\n 'gordon',\n 'legend',\n 'jessie',\n 'stella',\n 'qwert',\n 'eminem',\n 'arthur',\n 'apple',\n 'nissan',\n 'bullshit',\n 'bear',\n 'america',\n '1qazxsw2',\n 'nothing',\n 'parker',\n '4444',\n 'rebecca',\n 'qweqwe',\n 'garfield',\n '01012011',\n 'beavis',\n '69696969',\n 'jack',\n 'asdasd',\n 'december',\n '2222',\n '102030',\n '252525',\n '11223344',\n 'magic',\n 'apollo',\n 'skippy',\n '315475',\n 'girls',\n 'kitten',\n 'golf',\n 'copper',\n 'braves',\n 'shelby',\n 'godzilla',\n 'beaver',\n 'fred',\n 'tomcat',\n 'august',\n 'buddy',\n 'airborne',\n '1993',\n '1988',\n 'lifehack',\n 'qqqqqq',\n 'brooklyn',\n 'animal',\n 'platinum',\n 'phantom',\n 'online',\n 'xavier',\n 'darkness',\n 'blink182',\n 'power',\n 'fish',\n 'green',\n '789456123',\n 'voyager',\n 'police',\n 'travis',\n '12qwaszx',\n 'heaven',\n 'snowball',\n 'lover',\n 'abcdef',\n '00000',\n 'pakistan',\n '007007',\n 'walter',\n 'playboy',\n 'blazer',\n 'cricket',\n 'sniper',\n 'hooters',\n 'donkey',\n 'willow',\n 'loveme',\n 'saturn',\n 'therock',\n 'redwings',\n 'bigboy',\n 'pumpkin',\n 'trinity',\n 'williams',\n 'tits',\n 'nintendo',\n 'digital',\n 'destiny',\n 'topgun',\n 'runner',\n 'marvin',\n 'guinness',\n 'chance',\n 'bubbles',\n 'testing',\n 'fire',\n 'november',\n 'minecraft',\n 'asdf1234',\n 'lasvegas',\n 'sergey',\n 'broncos',\n 'cartman',\n 'private',\n 'celtic',\n 'birdie',\n 'little',\n 'cassie',\n 'babygirl',\n 'donald',\n 'beatles',\n '1313',\n 'dickhead',\n 'family',\n '12121212',\n 'school',\n 'louise',\n 'gabriel',\n 'eclipse',\n 'fluffy',\n '147258369',\n 'lol123',\n 'explorer',\n 'beer',\n 'nelson',\n 'flyers',\n 'spencer',\n 'scott',\n 'lovely',\n 'gibson',\n 'doggie',\n 'cherry',\n 'andrey',\n 'snickers',\n 'buffalo',\n 'pantera',\n 'metallica',\n 'member',\n 'carter',\n 'qwertyu',\n 'peter',\n 'alexande',\n 'steve',\n 'bronco',\n 'paradise',\n 'goober',\n '5555',\n 'samuel',\n 'montana',\n 'mexico',\n 'dreams',\n 'michigan',\n 'cock',\n 'carolina',\n 'yankee',\n 'friends',\n 'magnum',\n 'surfer',\n 'poopoo',\n 'maximus',\n 'genius',\n 'cool',\n 'vampire',\n 'lacrosse',\n 'asd123',\n 'aaaa',\n 'christin',\n 'kimberly',\n 'speedy',\n 'sharon',\n 'carmen',\n '111222',\n 'kristina',\n 'sammy',\n 'racing',\n 'ou812',\n 'sabrina',\n 'horses',\n '0987654321',\n 'qwerty1',\n 'pimpin',\n 'baby',\n 'stalker',\n 'enigma',\n '147147',\n 'star',\n 'poohbear',\n 'boobies',\n '147258',\n 'simple',\n 'bollocks',\n '12345q',\n 'marcus',\n 'brian',\n '1987',\n 'qweasdzxc',\n 'drowssap',\n 'hahaha',\n 'caroline',\n 'barbara',\n 'dave',\n 'viper',\n 'drummer',\n 'action',\n 'einstein',\n 'bitches',\n 'genesis',\n 'hello1',\n 'scotty',\n 'friend',\n 'forest',\n '010203',\n 'hotrod',\n 'google',\n 'vanessa',\n 'spitfire',\n 'badger',\n 'maryjane',\n 'friday',\n 'alaska',\n '1232323q',\n 'tester',\n 'jester',\n 'jake',\n 'champion',\n 'billy',\n '147852',\n 'rock',\n 'hawaii',\n 'badass',\n 'chevy',\n '420420',\n 'walker',\n 'stephen',\n 'eagle1',\n 'bill',\n '1986',\n 'october',\n 'gregory',\n 'svetlana',\n 'pamela',\n '1984',\n 'music',\n 'shorty',\n 'westside',\n 'stanley',\n 'diesel',\n 'courtney',\n '242424',\n 'kevin',\n 'porno',\n 'hitman',\n 'boobs',\n 'mark',\n '12345qwert',\n 'reddog',\n 'frank',\n 'qwe123',\n 'popcorn',\n 'patricia',\n 'aaaaaaaa',\n '1969',\n 'teresa',\n 'mozart',\n 'buddha',\n 'anderson',\n 'paul',\n 'melanie',\n 'abcdefg',\n 'security',\n 'lucky1',\n 'lizard',\n 'denise',\n '3333',\n 'a12345',\n '123789',\n 'ruslan',\n 'stargate',\n 'simpsons',\n 'scarface',\n 'eagle',\n '123456789a',\n 'thumper',\n 'olivia',\n 'naruto',\n '1234554321',\n 'general',\n 'cherokee',\n 'a123456',\n 'vincent',\n 'Usuckballz1',\n 'spooky',\n 'qweasd',\n 'cumshot',\n 'free',\n 'frankie',\n 'douglas',\n 'death',\n '1980',\n 'loveyou',\n 'kitty',\n 'kelly',\n 'veronica',\n 'suzuki',\n 'semperfi',\n 'penguin',\n 'mercury',\n 'liberty',\n 'spirit',\n 'scotland',\n 'natalie',\n 'marley',\n 'vikings',\n 'system',\n 'sucker',\n 'king',\n 'allison',\n 'marshall',\n '1979',\n '098765',\n 'qwerty12',\n 'hummer',\n 'adrian',\n '1985',\n 'vfhbyf',\n 'sandman',\n 'rocky',\n 'leslie',\n 'antonio',\n '98765432',\n '4321',\n 'softball',\n 'passion',\n 'mnbvcxz',\n 'bastard',\n 'passport',\n 'horney',\n 'rascal',\n 'howard',\n 'franklin',\n 'bigred',\n 'assman',\n 'alexander',\n 'homer',\n 'redrum',\n 'jupiter',\n 'claudia',\n '55555555',\n '141414',\n 'zaq12wsx',\n 'shit',\n 'patches',\n 'nigger',\n 'cunt',\n 'raider',\n 'infinity',\n 'andre',\n '54321',\n 'galore',\n 'college',\n 'russia',\n 'kawasaki',\n 'bishop',\n '77777777',\n 'vladimir',\n 'money1',\n 'freeuser',\n 'wildcats',\n 'francis',\n 'disney',\n 'budlight',\n 'brittany',\n '1994',\n '00000000',\n 'sweet',\n 'oksana',\n 'honda',\n 'domino',\n 'bulldogs',\n 'brutus',\n 'swordfis',\n 'norman',\n 'monday',\n 'jimmy',\n 'ironman',\n 'ford',\n 'fantasy',\n '9999',\n '7654321',\n 'PASSWORD',\n 'hentai',\n 'duncan',\n 'cougar',\n '1977',\n 'jeffrey',\n 'house',\n 'dancer',\n 'brooke',\n 'timothy',\n 'super',\n 'marines',\n 'justice',\n 'digger',\n 'connor',\n 'patriots',\n 'karina',\n '202020',\n 'molly',\n 'everton',\n 'tinker',\n 'alicia',\n 'rasdzv3',\n 'poop',\n 'pearljam',\n 'stinky',\n 'naughty',\n 'colorado',\n '123123a',\n 'water',\n 'test123',\n 'ncc1701d',\n 'motorola',\n 'ireland',\n 'asdfg',\n 'slut',\n 'matt',\n 'houston',\n 'boogie',\n 'zombie',\n 'accord',\n 'vision',\n 'bradley',\n 'reggie',\n 'kermit',\n 'froggy',\n 'ducati',\n 'avalon',\n '6666',\n '9379992',\n 'sarah',\n 'saints',\n 'logitech',\n 'chopper',\n '852456',\n 'simpson',\n 'madonna',\n 'juventus',\n 'claire',\n '159951',\n 'zachary',\n 'yfnfif',\n 'wolverin',\n 'warcraft',\n 'hello123',\n 'extreme',\n 'penis',\n 'peekaboo',\n 'fireman',\n 'eugene',\n 'brenda',\n '123654789',\n 'russell',\n 'panthers',\n 'georgia',\n 'smith',\n 'skyline',\n 'jesus',\n 'elizabet',\n 'spiderma',\n 'smooth',\n 'pirate',\n 'empire',\n 'bullet',\n '8888',\n 'virginia',\n 'valentin',\n 'psycho',\n 'predator',\n 'arizona',\n '134679',\n 'mitchell',\n 'alyssa',\n 'vegeta',\n 'titanic',\n 'christ',\n 'goblue',\n 'fylhtq',\n 'wolf',\n 'mmmmmm',\n 'kirill',\n 'indian',\n 'hiphop',\n 'baxter',\n 'awesome',\n 'people',\n 'danger',\n 'roland',\n 'mookie',\n '741852963',\n '1111111111',\n 'dreamer',\n 'bambam',\n 'arnold',\n '1981',\n 'skipper',\n 'serega',\n 'rolltide',\n 'elvis',\n 'changeme',\n 'simon',\n '1q2w3e',\n 'lovelove',\n 'fktrcfylh',\n 'denver',\n 'tommy',\n 'mine',\n 'loverboy',\n 'hobbes',\n 'happy1',\n 'alison',\n 'nemesis',\n 'chevelle',\n 'cardinal',\n 'burton',\n 'wanker',\n 'picard',\n '151515',\n 'tweety',\n 'michael1',\n '147852369',\n '12312',\n 'xxxx',\n 'windows',\n 'turkey',\n '456789',\n '1974',\n 'vfrcbv',\n 'sublime',\n '1975',\n 'galina',\n 'bobby',\n 'newport',\n 'manutd',\n 'daddy',\n 'american',\n 'alexandr',\n '1966',\n 'victory',\n 'rooster',\n 'qqq111',\n 'madmax',\n 'electric',\n 'bigcock',\n 'a1b2c3',\n 'wolfpack',\n 'spring',\n 'phpbb',\n 'lalala',\n 'suckme',\n 'spiderman',\n 'eric',\n 'darkside',\n 'classic',\n 'raptor',\n '123456789q',\n 'hendrix',\n '1982',\n 'wombat',\n 'avatar',\n 'alpha',\n 'zxc123',\n 'crazy',\n 'hard',\n 'england',\n 'brazil',\n '1978',\n '01011980',\n 'wildcat',\n 'polina',\n 'freepass'\n];\n","import { Injectable, inject } from '@angular/core';\nimport {\n AuthenticationDetails,\n CognitoUser,\n CognitoUserAttribute,\n CognitoUserPool,\n CognitoRefreshToken,\n CognitoUserSession,\n ISignUpResult,\n ChallengeName\n} from 'amazon-cognito-identity-js';\nimport { IDEAEnvironment, IDEAStorageService, IDEATranslationsService } from '@idea-ionic/common';\n\nimport { COMMON_PASSWORDS_TOP_1000 } from './commonPasswords.model';\n\n/**\n * Cognito wrapper to manage the authentication flow.\n *\n * Note: in IDEA's Cognito users pools, the email is an alias of the username.\n */\n@Injectable({ providedIn: 'root' })\nexport class IDEAAuthService {\n protected _env = inject(IDEAEnvironment);\n protected _translate = inject(IDEATranslationsService);\n protected _storage = inject(IDEAStorageService);\n\n /**\n * The name of the Cognito's user attribute which contains the key of the last device to login in this project.\n */\n protected deviceKeyAttribute: string;\n\n private userPool: CognitoUserPool;\n\n challengeUsername: string;\n private challengePassword: string;\n\n private newAccountJustRegistered: string;\n\n private mfaProjectName: string;\n\n private passwordPolicy: any;\n\n constructor() {\n this.deviceKeyAttribute = 'custom:'.concat(this._env.idea.project);\n this.userPool = new CognitoUserPool({\n UserPoolId: this._env.aws.cognito.userPoolId,\n ClientId: this._env.aws.cognito.userPoolClientId\n });\n this.mfaProjectName = this._env.idea.auth.title || this._env.idea.project;\n this.passwordPolicy = this._env.idea.auth.passwordPolicy;\n }\n\n /**\n * Prepare the necessary structure to get authorized in Cognito.\n */\n private prepareAuthDetails(username: string, pwd: string): AuthenticationDetails {\n return new AuthenticationDetails({ Username: username, Password: pwd });\n }\n /**\n * Prepare the necessary structure to identify a Cognito user.\n */\n prepareCognitoUser(username: string): CognitoUser {\n return new CognitoUser({ Username: username, Pool: this.userPool });\n }\n /**\n * Prepare a user attribute (they are all strings) in Cognito's format.\n */\n private prepareUserAttribute(name: string, value: string): CognitoUserAttribute {\n return new CognitoUserAttribute({ Name: name, Value: value });\n }\n\n /**\n * Perform a login through username and password.\n */\n login(username: string, password: string): Promise<LoginOutcomeActions> {\n return new Promise((resolve, reject): void => {\n const user = this.prepareCognitoUser(username);\n user.authenticateUser(this.prepareAuthDetails(username, password), {\n onSuccess: (): void =>\n resolve(this._env.idea.auth.forceLoginWithMFA ? LoginOutcomeActions.MFA_SETUP : LoginOutcomeActions.NONE),\n onFailure: (err: Error): void => reject(err),\n newPasswordRequired: (): void => {\n this.challengeUsername = username;\n this.challengePassword = password;\n resolve(LoginOutcomeActions.NEW_PASSWORD);\n },\n totpRequired: (): void => {\n this.challengeUsername = username;\n this.challengePassword = password;\n resolve(LoginOutcomeActions.MFA_CHALLENGE);\n }\n });\n });\n }\n /**\n * Complete the new password flow in the authentication.\n */\n confirmNewPassword(newPassword: string): Promise<void> {\n return new Promise((resolve, reject): void => {\n const user = this.prepareCognitoUser(this.challengeUsername);\n user.authenticateUser(this.prepareAuthDetails(this.challengeUsername, this.challengePassword), {\n onSuccess: (): void => resolve(),\n onFailure: (err: Error): void => reject(err),\n newPasswordRequired: (): void =>\n user.completeNewPasswordChallenge(\n newPassword,\n {},\n {\n onSuccess: (): void => {\n this.challengeUsername = null;\n this.challengePassword = null;\n resolve();\n },\n onFailure: (err: Error): void => reject(err)\n }\n )\n });\n });\n }\n /**\n * Complete the MFA challenge flow in the authentication.\n */\n completeMFAChallenge(otpCode: string): Promise<void> {\n return new Promise((resolve, reject): void => {\n const user = this.prepareCognitoUser(this.challengeUsername);\n user.authenticateUser(this.prepareAuthDetails(this.challengeUsername, this.challengePassword), {\n onSuccess: (): void => resolve(),\n onFailure: (err: Error): void => reject(err),\n totpRequired: (challengeName: ChallengeName): void =>\n user.sendMFACode(\n otpCode,\n {\n onSuccess: (): void => {\n this.challengeUsername = null;\n this.challengePassword = null;\n resolve();\n },\n onFailure: err => reject(err)\n },\n challengeName\n )\n });\n });\n }\n /**\n * Register a new user a set its default attributes.\n */\n register(username: string, password: string, attributes?: any): Promise<CognitoUser> {\n attributes = attributes || {};\n return new Promise((resolve, reject): void => {\n // add attributes like the email address and the fullname\n const attrs = [];\n for (const prop in attributes)\n if (attributes[prop]) attrs.push(this.prepareUserAttribute(prop, attributes[prop]));\n // add the email, which is equal to the username for most of our Pools\n if (!attributes.email) attrs.push(this.prepareUserAttribute('email', username));\n // register the new user to the pool\n this.userPool.signUp(username, password, attrs, null, (err: Error, res: ISignUpResult): void => {\n if (err) return reject(err);\n this.newAccountJustRegistered = username;\n resolve(res.user);\n });\n });\n }\n /**\n * In case a new account has just been registered, return the username.\n */\n getNewAccountJustRegistered(): string {\n return this.newAccountJustRegistered;\n }\n /**\n * Confirm a new registration through the confirmation code sent by Cognito.\n */\n confirmRegistration(username: string, code: string): Promise<void> {\n return new Promise((resolve, reject): void => {\n this.prepareCognitoUser(username).confirmRegistration(code, true, (err: Error): void =>\n err ? reject(err) : resolve()\n );\n });\n }\n /**\n * Send again a confirmation code for a new registration.\n */\n resendConfirmationCode(username: string): Promise<void> {\n return new Promise((resolve, reject): void => {\n this.prepareCognitoUser(username).resendConfirmationCode((err: Error): void => (err ? reject(err) : resolve()));\n });\n }\n /**\n * Logout the currently signed-in user.\n */\n logout(options?: { global: boolean }): Promise<void> {\n options = Object.assign({ global: false }, options);\n return new Promise((resolve, reject): void => {\n // remove the refresh token previosly saved\n this._storage.remove('AuthRefreshToken').then(\n (): Promise<void> =>\n // remove the optional auth details\n this._storage.remove('AuthUserDetails').then((): void => {\n // get the user and the session\n const user = this.userPool.getCurrentUser();\n user.getSession(async (err: Error): Promise<void> => {\n // if the session is active, run the online sign-out; otherwise, only the local data has been deleted\n if (err) return resolve();\n // if a reference to the device was saved, forget it\n if (this._env.idea.auth.singleSimultaneousSession) await this.setCurrentDeviceForProject(null);\n // sign-out from the pool (terminate the current session or all the sessions)\n if (options.global)\n user.globalSignOut({ onSuccess: (): void => resolve(), onFailure: err => reject(err) });\n else {\n user.signOut();\n resolve();\n }\n });\n })\n );\n });\n }\n /**\n * Send a password reset request.\n */\n forgotPassword(username: string): Promise<void> {\n return new Promise((resolve, reject): void => {\n this.prepareCognitoUser(username).forgotPassword({\n onSuccess: (): void => resolve(),\n onFailure: (err: Error): void => reject(err)\n });\n });\n }\n /**\n * Confirm a new password after a password reset request.\n */\n confirmPassword(username: string, code: string, newPwd: string): Promise<void> {\n return new Promise((resolve, reject): void => {\n this.prepareCognitoUser(username).confirmPassword(code, newPwd, {\n onSuccess: (): void => resolve(),\n onFailure: (err: Error): void => reject(err)\n });\n });\n }\n /**\n * Gets the URL for enabling MFA. This URL can be used to generate a QR Code to read with an authenticator app.\n */\n getURLForEnablingMFA(): Promise<string> {\n return new Promise((resolve, reject): void => {\n const user = this.userPool.getCurrentUser();\n if (!user) return reject();\n user.getSession((err: Error): void => {\n if (err) return reject(err);\n user.associateSoftwareToken({\n associateSecretCode: (secretCode: string): void =>\n resolve(`otpauth://totp/${encodeURI(this.mfaProjectName)}?secret=${secretCode}`),\n onFailure: (err: any): void => reject(err)\n });\n });\n });\n }\n /**\n * Check whether the user has MFA enabled.\n */\n checkIfUserHasMFAEnabled(bypassCache = false): Promise<boolean> {\n return new Promise((resolve, reject): void => {\n const user = this.userPool.getCurrentUser();\n if (!user) return reject();\n user.getSession((err: Error): void => {\n if (err) return reject(err);\n user.getUserData(\n (err, data): void => {\n if (err) return reject(err);\n const isMFAEnabled = !!(data.UserMFASettingList && data.UserMFASettingList.includes('SOFTWARE_TOKEN_MFA'));\n resolve(isMFAEnabled);\n },\n { bypassCache }\n );\n });\n });\n }\n /**\n * Configure a MFA device for the user.\n */\n private setMFADevice(otp: string, mfaDeviceName: string, enabled = true, preferred = true): Promise<void> {\n return new Promise((resolve, reject): void => {\n const user = this.userPool.getCurrentUser();\n if (!user) return reject();\n user.getSession((err: Error): void => {\n if (err) return reject(err);\n user.verifySoftwareToken(otp, mfaDeviceName, {\n onSuccess: (): void =>\n user.setUserMfaPreference(null, { Enabled: enabled, PreferredMfa: preferred }, (err: Error): void =>\n err ? reject(err) : resolve()\n ),\n onFailure: (err): void => reject(err)\n });\n });\n });\n }\n /**\n * Enable a new MFA device for the user by inserting an OTP code generated by it.\n */\n enableMFA(otp: string, mfaDeviceName = 'default'): Promise<void> {\n return this.setMFADevice(otp, mfaDeviceName, true, true);\n }\n /**\n * Disable MFA for a user by inserting an OTP code generated by it.\n */\n disableMFA(otp: string, mfaDeviceName = 'default'): Promise<void> {\n return this.setMFADevice(otp, mfaDeviceName, false, false);\n }\n /**\n * Check if a user is currently authenticated.\n * @param offlineAllowed if set and if offline, skip authentication and retrieve data locally\n * @param getFreshIdTokenOnExp cb function to execute when the idToken is refreshed\n */\n isAuthenticated(offlineAllowed: boolean, getFreshIdTokenOnExp?: (freshIdToken: string) => void): Promise<any> {\n return new Promise((resolve, reject): void => {\n if (offlineAllowed && !navigator.onLine) {\n this._storage.get('AuthUserDetails').then(userDetails => resolve({ idToken: null, userDetails }));\n // re-execute the method when back online, so that you can retrieve a token to make requests\n window.addEventListener(\n 'online',\n (): Promise<void> =>\n this.isAuthenticated(true, getFreshIdTokenOnExp)\n // set the new token as if it was refreshed\n .then(result => getFreshIdTokenOnExp(result.idToken))\n );\n } else {\n const user = this.userPool.getCurrentUser();\n if (!user) return reject();\n user.getSession((err: Error, session: CognitoUserSession): void => {\n if (err) return reject(err);\n user.getUserData(\n (err, data): void => {\n if (err) return reject(err);\n const isMFAEnabled = !!(\n data.UserMFASettingList && data.UserMFASettingList.includes('SOFTWARE_TOKEN_MFA')\n );\n if (!isMFAEnabled && this._env.idea.auth.forceLoginWithMFA)\n return reject(new Error(LoginOutcomeActions.MFA_SETUP));\n user.getUserAttributes((e: Error, attributes: CognitoUserAttribute[]): void => {\n if (e) return reject(e);\n // remap user attributes\n const userDetails: any = {};\n attributes.forEach((a: CognitoUserAttribute): string => (userDetails[a.getName()] = a.getValue()));\n // add the user's groups to the attributes\n const sessionInfo = session.getAccessToken().decodePayload();\n const groups: string[] = sessionInfo['cognito:groups'] || [];\n userDetails['groups'] = groups;\n // run some checks considering the user's groups and devices (based on the project's configuration)\n this.runPostAuthChecks(userDetails, err => {\n // in case some check failed, reject the authorisation flow\n if (err) return reject(err);\n // (async) save the refresh token so it can be accessed by other procedures\n this._storage.set('AuthRefreshToken', session.getRefreshToken().getToken());\n // set a timer to manage the autorefresh of the idToken (through the refreshToken)\n setTimeout(\n (): void => this.refreshSession(user, session.getRefreshToken().getToken(), getFreshIdTokenOnExp),\n 15 * 60 * 1000\n ); // every 15 minutes\n // (async) if offlineAllowed, save data locally, to use it next time we'll be offline\n if (offlineAllowed) this._storage.set('AuthUserDetails', userDetails);\n // return the idToken (to use with API)\n resolve({ idToken: session.getIdToken().getJwtToken(), userDetails });\n });\n });\n },\n { bypassCache: true }\n );\n });\n }\n });\n }\n /**\n * Helper to refresh the session every N minutes.\n */\n private refreshSession(user: CognitoUser, refreshToken: string, callback: (freshIdToken: string) => void): void {\n user.refreshSession(\n new CognitoRefreshToken({ RefreshToken: refreshToken }),\n (err: Error, session: CognitoUserSession): void => {\n if (err) {\n // try again in 1 minute\n setTimeout((): void => this.refreshSession(user, refreshToken, callback), 1 * 60 * 1000);\n } else {\n // (async) save the refresh token so it can be accessed by other procedures\n this._storage.set('AuthRefreshToken', session.getRefreshToken().getToken());\n // repeat every 15 minutes\n setTimeout(\n (): void => this.refreshSession(user, session.getRefreshToken().getToken(), callback),\n 15 * 60 * 1000\n );\n // run the callback action, if set\n if (callback) callback(session.getIdToken().getJwtToken());\n }\n }\n );\n }\n /**\n * Run some post-auth checks, based on the users groups and on the app's configuration:\n * - users in the Cognito's \"admins\" grup skip all the following rules.\n * - users in the Cognito's \"robots\" group can't sign-into front-ends (they serve only back-end purposes).\n * - if `env.idea.auth.singleSimultaneousSession` is on, make sure there is only one active session per user.\n */\n private runPostAuthChecks(userDetails: any, callback: (err?: Error) => void): void | Promise<void> {\n const groups: string[] = userDetails['groups'];\n // skip checks if the user is in the \"admins\" group\n const isAdmin = groups.some(x => x === 'admins');\n if (isAdmin) return callback();\n // users in the \"robots\" group can't sign-into front-ends (they serve only back-end purposes)\n const isRobot = groups.some(x => x === 'robots');\n if (isRobot) return callback(new Error('ROBOT_USER'));\n // in case the project limits each account to only one simultaneous session, run a check\n if (this._env.idea.auth.singleSimultaneousSession) return this.checkForSimultaneousSessions(userDetails, callback);\n // otherwise, we're done\n callback();\n }\n /**\n * Check whether the user signed-into multiple devices.\n */\n private async checkForSimultaneousSessions(userDetails: any, callback: (err?: Error) => void): Promise<void> {\n // get or create a key for the current device (~random)\n let currentDeviceKey = await this._storage.get('AuthDeviceKey');\n if (!currentDeviceKey) {\n const randomKey = Math.random().toString(36).substring(10);\n currentDeviceKey = randomKey.concat(String(Date.now()));\n await this._storage.set('AuthDeviceKey', currentDeviceKey);\n }\n // check whether the last device to sign-into this project (if any) is the current one\n const lastDeviceToSignIntoThisProject = userDetails[this.deviceKeyAttribute];\n // if it's the first user's device to sign-in, save the reference in Cognito and resolve\n if (!lastDeviceToSignIntoThisProject) {\n this.setCurrentDeviceForProject(currentDeviceKey)\n .then((): void => callback())\n .catch((): void => callback(new Error('CANT_SET_DEVICE')));\n // if the device didn't change, resolve\n } else if (lastDeviceToSignIntoThisProject === currentDeviceKey) callback();\n // othwerwise, report there is more than one simultaneous session\n else callback(new Error('SIMULTANEOUS_SESSION'));\n }\n /**\n * Set (or reset) the current user's device (by key) in the current project (stored in Cognito).\n */\n private setCurrentDeviceForProject(deviceKey?: string): Promise<void> {\n const attributes: any = {};\n // note: an empty string will remove the attribute from Cognito\n attributes[this.deviceKeyAttribute] = deviceKey || '';\n return this.updateUserAttributes(attributes);\n }\n /**\n * Update the currently logged in user's attributes.\n */\n updateUserAttributes(attributes: any): Promise<void> {\n return new Promise((resolve, reject): void => {\n // prepare the attributes we want to change\n const attrs = new Array<any>();\n for (const prop in attributes)\n if (attributes[prop] !== undefined) attrs.push(this.prepareUserAttribute(prop, attributes[prop]));\n const user = this.userPool.getCurrentUser();\n if (!user) return reject();\n // we need to get the session before to make changes\n user.getSession((err: Error): void => {\n if (err) reject(err);\n else user.updateAttributes(attrs, (e: Error): void => (e ? reject(e) : resolve()));\n });\n });\n }\n\n /**\n * Validate the password against the policy set in the environments configuration.\n * In case there are errors, they are returned as an array of strings.\n */\n validatePasswordAgainstPolicy(password: string): string[] {\n const errors: string[] = [];\n if (password?.trim().length < this.passwordPolicy.minLength) errors.push('MIN_LENGTH');\n if (this.passwordPolicy.requireDigits && !/\\d/.test(password)) errors.push('REQUIRE_DIGITS');\n if (this.passwordPolicy.requireLowercase && !/[a-z]/.test(password)) errors.push('REQUIRE_LOWERCASE');\n if (this.passwordPolicy.requireSymbols && !/[\\^\\$\\*\\.\\_\\~\\`\\+\\=@\\!\\?\\>\\<\\:\\;\\\\\\,\\#\\%\\&]/.test(password))\n errors.push('REQUIRE_SYMBOLS');\n if (this.passwordPolicy.requireUppercase && !/[A-Z]/.test(password)) errors.push('REQUIRE_UPPERCASE');\n return errors;\n }\n /**\n * Validate the password against offline and online databases, to avoid common and exploited passwords.\n */\n async validatePasswordAgainstDatabases(password: string, customStringsToAvoid?: string[]): Promise<string[]> {\n const errors: string[] = [];\n let pwd = (password || '').trim().toLowerCase();\n const pwdContains = (str: string): boolean => pwd.includes((str || '').trim().toLowerCase());\n const projectReferencesToAvoid = [\n this._env.idea.project,\n this._env.idea.auth.title,\n this._translate._('COMMON.APP_NAME')\n ];\n if (projectReferencesToAvoid.some(x => pwdContains(x))) errors.push('COMMON_PASSWORD_PROJECT');\n if (customStringsToAvoid && customStringsToAvoid.some(x => pwdContains(x))) errors.push('COMMON_PASSWORD_CUSTOM');\n if (COMMON_PASSWORDS_TOP_1000.some(x => pwdContains(x))) errors.push('COMMON_PASSWORD_INTERNAL');\n if (errors.length === 0) {\n const pwdSHA1 = await SHA1(password);\n if (pwdSHA1) {\n const res = await fetch('https://api.pwnedpasswords.com/range/'.concat(pwdSHA1.slice(0, 5)));\n if (res.status === 200) {\n const pwnedPasswordsRawSuffixes = await res.text();\n if (pwnedPasswordsRawSuffixes.includes(pwdSHA1.slice(5))) errors.push('COMMON_PASSWORD_EXTERNAL');\n }\n }\n }\n return errors;\n }\n /**\n * Get a complete password policy pattern, based on the environments configuration, to use on password input fields.\n * Note: some of the symbols couldn't be included because unsupported by the input[pattern] attribute.\n */\n getPasswordPolicyPatternForInput(): string {\n let pattern = '';\n if (this.passwordPolicy.requireDigits) pattern += `(?=.*[0-9])`;\n if (this.passwordPolicy.requireLowercase) pattern += `(?=.*[a-z])`;\n if (this.passwordPolicy.requireSymbols) pattern += `(?=.*[\\^\\$\\*\\.\\_\\~\\`\\+\\=@\\!\\?\\>\\<\\:\\;\\\\\\,\\#\\%\\&])`;\n if (this.passwordPolicy.requireUppercase) pattern += `(?=.*[A-Z])`;\n pattern += `.{${this.passwordPolicy.minLength},}`;\n return pattern;\n }\n}\n\n/**\n * The possible actions following a successful login.\n */\nexport enum LoginOutcomeActions {\n NONE = 'none',\n NEW_PASSWORD = 'newPassword',\n MFA_CHALLENGE = 'mfaChallenge',\n MFA_SETUP = 'mfaSetup'\n}\n\n/**\n * Get the SHA1 hex uppercase hash of a string, using web crypto.\n */\nconst SHA1 = async (str: string): Promise<string | null> => {\n if (!window.crypto) return null;\n const msgUint8 = new TextEncoder().encode(str);\n const hashBuffer = await window.crypto.subtle.digest('SHA-1', msgUint8);\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\n return hashHex.toUpperCase();\n};\n","import { Component, inject, ChangeDetectionStrategy, signal, model } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n NavController,\n IonItem,\n IonContent,\n IonCard,\n IonCardContent,\n IonImg,\n IonCardHeader,\n IonCardTitle,\n IonCardSubtitle,\n IonLabel,\n IonIcon,\n IonRow,\n IonCol,\n IonText,\n IonButton,\n IonInput,\n IonCheckbox\n} from '@ionic/angular/standalone';\nimport { Browser } from '@capacitor/browser';\nimport { isEmpty } from 'idea-toolbox';\nimport {\n IDEAEnvironment,\n IDEAMessageService,\n IDEALoadingService,\n IDEATranslationsService,\n IDEATranslatePipe\n} from '@idea-ionic/common';\n\nimport { IDEAAuthService, LoginOutcomeActions } from './auth.service';\n\n@Component({\n selector: 'idea-sign-in',\n imports: [\n FormsModule,\n IDEATranslatePipe,\n IonButton,\n IonText,\n IonCol,\n IonRow,\n IonIcon,\n IonLabel,\n IonCardSubtitle,\n IonCardTitle,\n IonCardHeader,\n IonImg,\n IonCardContent,\n IonCard,\n IonContent,\n IonItem,\n IonInput,\n IonCheckbox\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ion-content>\n @if (newAccountRegistered()) {\n <ion-card color=\"warning\">\n <ion-card-content>{{ 'IDEA_AUTH.CONFIRM_YOUR_EMAIL_TO_LOGIN' | translate }}</ion-card-content>\n </ion-card>\n }\n <form class=\"flexBox\">\n <div>\n <ion-card class=\"authCard\">\n <ion-img\n [title]=\"'IDEA_AUTH.SERVICE_LOGO' | translate\"\n [src]=\"darkMode ? 'assets/icons/icon-auth-alt.svg' : 'assets/icons/icon-auth.svg'\"\n />\n <ion-card-header>\n @if (title) {\n <ion-card-title color=\"primary\">{{ title }}</ion-card-title>\n }\n @if (translationExists('IDEA_VARIABLES.TAGLINE')) {\n <ion-card-subtitle> {{ 'IDEA_VARIABLES.TAGLINE' | translate }} </ion-card-subtitle>\n }\n </ion-card-header>\n <ion-card-content>\n @if (errorMsg()) {\n <p testId=\"signin.error\" class=\"errorBox\">\n <b>{{ 'IDEA_AUTH.WARNING' | translate }}.</b> {{ errorMsg() }}\n </p>\n }\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"person-circle\" color=\"primary\" />\n </ion-label>\n <ion-input\n testId=\"signin.email\"\n type=\"email\"\n inputmode=\"email\"\n pattern=\"[A-Za-z0-9._%+-]{2,}@[a-zA-Z-_.]{2,}[.]{1}[a-zA-Z]{2,}\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocomplete=\"email\"\n [placeholder]=\"'IDEA_AUTH.EMAIL' | translate\"\n [title]=\"'IDEA_AUTH.EMAIL_HINT' | translate\"\n [disabled]=\"externalProviders.length && doneExternalProviderCheck\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"email\"\n (keyup.enter)=\"externalProviders.length ? checkForExternalProviderEmail() : login()\"\n />\n @if (externalProviders.length && doneExternalProviderCheck) {\n <ion-button\n slot=\"end\"\n fill=\"clear\"\n [title]=\"'IDEA_AUTH.EDIT_EMAIL' | translate\"\n (click)=\"doneExternalProviderCheck = false\"\n >\n <ion-icon icon=\"pencil\" slot=\"icon-only\" />\n </ion-button>\n }\n </ion-item>\n @if (externalProviders.length && !doneExternalProviderCheck) {\n <ion-button\n testId=\"continueButton\"\n expand=\"block\"\n [disabled]=\"!agreementsCheck\"\n [title]=\"'IDEA_AUTH.CONTINUE_HINT' | translate\"\n (click)=\"checkForExternalProviderEmail()\"\n >\n {{ 'IDEA_AUTH.CONTINUE' | translate }}\n </ion-button>\n } @else {\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"key\" color=\"primary\" />\n </ion-label>\n <ion-input\n testId=\"signin.password\"\n id=\"current-password\"\n type=\"password\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocomplete=\"current-password\"\n [clearOnEdit]=\"false\"\n [placeholder]=\"'IDEA_AUTH.PASSWORD' | translate\"\n [title]=\"'IDEA_AUTH.PASSWORD_HINT' | translate\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"password\"\n (keyup.enter)=\"login()\"\n />\n </ion-item>\n @if (\n !registrationPossible &&\n (translationExists('IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL') ||\n translationExists('IDEA_VARIABLES.PRIVACY_POLICY_URL'))\n ) {\n <ion-row class=\"agreementsAcceptanceRow\">\n <ion-col>\n <ion-checkbox\n size=\"small\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"agreementsCheck\"\n />\n {{ 'IDEA_AUTH.AGREEMENTS_CHECK_LOGIN' | translate }}:\n @if (translationExists('IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL')) {\n <a\n ion-text\n testId=\"openTermsAndConditionsButton\"\n color=\"primary\"\n target=\"_blank\"\n [title]=\"'IDEA_AUTH.TERMS_AND_CONDITIONS_HINT' | translate\"\n [href]=\"'IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL' | translate\"\n >\n {{ 'IDEA_AUTH.TERMS_AND_CONDITIONS' | translate }}\n </a>\n }\n @if (\n translationExists('IDEA_VARIABLES.PRIVACY_POLICY_URL') &&\n translationExists('IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL')\n ) {\n <ion-text> & </ion-text>\n }\n @if (translationExists('IDEA_VARIABLES.PRIVACY_POLICY_URL')) {\n <a\n ion-text\n testId=\"openPrivacyPolicyButton\"\n color=\"primary\"\n target=\"_blank\"\n [title]=\"'IDEA_AUTH.PRIVACY_POLICY_HINT' | translate\"\n [href]=\"'IDEA_VARIABLES.PRIVACY_POLICY_URL' | translate\"\n >\n {{ 'IDEA_AUTH.PRIVACY_POLICY' | translate }}\n </a>\n }\n </ion-col>\n </ion-row>\n }\n <ion-button\n testId=\"signInButton\"\n expand=\"block\"\n [disabled]=\"!agreementsCheck\"\n [title]=\"'IDEA_AUTH.SIGN_IN_HINT' | translate\"\n (click)=\"login()\"\n >\n {{ 'IDEA_AUTH.SIGN_IN' | translate }}\n </ion-button>\n @if (registrationPossible) {\n <ion-button\n testId=\"createAnAccountButton\"\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"'IDEA_AUTH.CREATE_AN_ACCOUNT_HINT' | translate\"\n (click)=\"goToRegistration()\"\n >\n {{ 'IDEA_AUTH.CREATE_AN_ACCOUNT' | translate }}\n </ion-button>\n }\n <ion-button\n testId=\"forgotPasswordButton\"\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"'IDEA_AUTH.I_FORGOT_MY_PASSWORD_HINT' | translate\"\n (click)=\"goToForgotPassword()\"\n >\n {{ 'IDEA_AUTH.I_FORGOT_MY_PASSWORD' | translate }}\n </ion-button>\n }\n @if (hasIntroPage) {\n <ion-button\n testId=\"backToIntroButton\"\n fill=\"clear\"\n expand=\"block\"\n color=\"medium\"\n class=\"smallCaseButton\"\n [title]=\"'IDEA_AUTH.BACK_TO_INTRO_HINT' | translate\"\n (click)=\"goToIntro()\"\n >\n {{ 'IDEA_AUTH.BACK_TO_INTRO' | translate }}\n </ion-button>\n }\n </ion-card-content>\n </ion-card>\n @if (website) {\n <ion-img\n class=\"ideaLogo\"\n [src]=\"darkMode ? './assets/icons/idea-alt.png' : './assets/icons/idea.png'\"\n [title]=\"'IDEA_AUTH.IDEA_TAGLINE' | translate\"\n (click)=\"openLink(website)\"\n />\n }\n </div>\n </form>\n </ion-content>\n `,\n styleUrls: ['auth.scss']\n})\nexport class IDEASignInPage {\n protected _env = inject(IDEAEnvironment);\n private _nav = inject(NavController);\n private _message = inject(IDEAMessageService);\n private _loading = inject(IDEALoadingService);\n private _translate = inject(IDEATranslationsService);\n private _auth = inject(IDEAAuthService);\n\n title: string;\n registrationPossible: boolean;\n hasIntroPage: boolean;\n website: string;\n externalProviders: { type: string; name: string; emailDomains: string[] }[];\n doneExternalProviderCheck = false;\n\n email = model<string>();\n password: string;\n agreementsCheck = true;\n newAccountRegistered = signal<boolean>(false);\n errorMsg = signal<string>(null);\n darkMode = window.matchMedia('(prefers-color-scheme: dark)').matches;\n\n constructor() {\n this.title = this._env.idea.auth.title;\n this.registrationPossible = this._env.idea.auth.registrationIsPossible;\n this.hasIntroPage = this._env.idea.auth.hasIntroPage;\n this.website = this._env.idea.auth.website;\n this.externalProviders = this._env.aws.cognito?.externalProviders || [];\n }\n ionViewDidEnter(): void {\n // manage the scenario in which we just created a new account (show a explanatory message: email must be confirmed)\n this.newAccountRegistered.set(!!this._auth.getNewAccountJustRegistered());\n if (this.newAccountRegistered()) this.email.set(this._auth.getNewAccountJustRegistered());\n }\n\n async login(): Promise<void> {\n if (!this.agreementsCheck) return;\n try {\n this.errorMsg.set(null);\n await this._loading.show();\n const loginAction = await this._auth.login(this.email(), this.password);\n if (loginAction === LoginOutcomeActions.NEW_PASSWORD) this._nav.navigateForward(['auth', 'new-password']);\n else if (loginAction === LoginOutcomeActions.MFA_CHALLENGE) this._nav.navigateForward(['auth', 'mfa-challenge']);\n else if (loginAction === LoginOutcomeActions.MFA_SETUP) this._nav.navigateForward(['auth', 'setup-mfa']);\n else window.location.assign('');\n } catch (err) {\n if ((err as any).name === 'UserNotConfirmedException')\n this.errorMsg.set(this._translate._('IDEA_AUTH.CONFIRM_YOUR_EMAIL_TO_LOGIN'));\n else if (\n (err as any).name === 'UserLambdaValidationException' &&\n (err as any).message?.includes('@IDEA_COGNITO_TRANSITION')\n )\n this.errorMsg.set(this._translate._('IDEA_AUTH.CHANGE_YOUR_PASSWORD_TO_LOGIN'));\n this._message.error('IDEA_AUTH.AUTHENTICATION_FAILED');\n } finally {\n this._loading.hide();\n }\n }\n\n checkForExternalProviderEmail(): void {\n if (isEmpty(this.email(), 'email')) return;\n const emailDomain = this.email().split('@')[1];\n this.doneExternalProviderCheck = true;\n const provider = this.externalProviders.find(p => p.emailDomains.includes(emailDomain));\n if (provider)\n this._nav.navigateForward(['auth', provider.type], { queryParams: { provider: provider.name, go: true } });\n }\n\n goToIntro(): void {\n this._nav.navigateBack(['intro']);\n }\n goToForgotPassword(): void {\n this._nav.navigateForward(['auth', 'forgot-password']);\n }\n goToRegistration(): void {\n this._nav.navigateForward(['auth', 'sign-up']);\n }\n\n translationExists(key: string): boolean {\n return !!this._translate._(key);\n }\n\n async openLink(url: string): Promise<void> {\n await Browser.open({ url });\n }\n}\n","import { Component, inject, ChangeDetectionStrategy } from '@angular/core';\nimport { IonCard, IonCardContent, IonCardHeader, IonCardTitle } from '@ionic/angular/standalone';\nimport { IDEAEnvironment, IDEATranslatePipe } from '@idea-ionic/common';\n\n@Component({\n selector: 'idea-password-policy',\n imports: [IDEATranslatePipe, IonCard, IonCardHeader, IonCardTitle, IonCardContent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ion-card class=\"passwordPolicyCard\">\n <ion-card-header>\n <ion-card-title>{{ 'IDEA_AUTH.PASSWORD_REQUIREMENTS_TITLE' | translate }}</ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <ul>\n <li>{{ 'IDEA_AUTH.PASSWORD_REQUIREMENTS.MIN_LENGTH' | translate: { n: passwordPolicy.minLength } }}</li>\n @if (passwordPolicy.requireDigits) {\n <li>\n {{ 'IDEA_AUTH.PASSWORD_REQUIREMENTS.REQUIRE_DIGITS' | translate }}\n </li>\n }\n @if (passwordPolicy.requireSymbols) {\n <li>\n {{ 'IDEA_AUTH.PASSWORD_REQUIREMENTS.REQUIRE_SYMBOLS' | translate }}\n </li>\n }\n @if (passwordPolicy.requireUppercase) {\n <li>\n {{ 'IDEA_AUTH.PASSWORD_REQUIREMENTS.REQUIRE_UPPERCASE' | translate }}\n </li>\n }\n @if (passwordPolicy.requireLowercase) {\n <li>\n {{ 'IDEA_AUTH.PASSWORD_REQUIREMENTS.REQUIRE_LOWERCASE' | translate }}\n </li>\n }\n </ul>\n </ion-card-content>\n </ion-card>\n `,\n styles: [\n `\n ion-card.passwordPolicyCard {\n box-shadow: none;\n border: none;\n padding: 6px;\n }\n ion-card.passwordPolicyCard ion-card-title {\n font-size: 1rem;\n }\n ion-card.passwordPolicyCard ul {\n margin: 0;\n }\n `\n ]\n})\nexport class IDEAPasswordPolicyComponent {\n protected _env = inject(IDEAEnvironment);\n\n passwordPolicy: any;\n\n constructor() {\n this.passwordPolicy = this._env.idea.auth.passwordPolicy;\n }\n}\n","import { Component, OnInit, inject, signal, ChangeDetectionStrategy } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n NavController,\n PopoverController,\n IonContent,\n IonCard,\n IonCardHeader,\n IonCardTitle,\n IonCardSubtitle,\n IonCardContent,\n IonItem,\n IonIcon,\n IonLabel,\n IonButton,\n IonRow,\n IonCol,\n IonText,\n IonInput,\n IonCheckbox\n} from '@ionic/angular/standalone';\nimport { isEmpty } from 'idea-toolbox';\nimport {\n IDEAEnvironment,\n IDEAMessageService,\n IDEALoadingService,\n IDEATranslationsService,\n IDEATranslatePipe\n} from '@idea-ionic/common';\n\nimport { IDEAPasswordPolicyComponent } from './passwordPolicy.component';\nimport { IDEAAuthService } from './auth.service';\n\n@Component({\n selector: 'idea-sign-up',\n imports: [\n FormsModule,\n IDEATranslatePipe,\n IonText,\n IonCol,\n IonRow,\n IonButton,\n IonLabel,\n IonIcon,\n IonItem,\n IonCardContent,\n IonCardSubtitle,\n IonCardTitle,\n IonCardHeader,\n IonCard,\n IonContent,\n IonInput,\n IonCheckbox\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ion-content>\n <form class=\"flexBox\">\n <ion-card class=\"authCard\">\n <ion-card-header>\n <ion-card-title color=\"primary\">{{ 'IDEA_AUTH.NEW_ACCOUNT' | translate }}</ion-card-title>\n <ion-card-subtitle>{{ 'IDEA_AUTH.REGISTER_A_NEW_ACCOUNT_TO_THE_SYSTEM' | translate }}</ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n @if (errorMsg()) {\n <p testId=\"signup.error\" class=\"errorBox\">\n <b> {{ 'IDEA_AUTH.ERROR' | translate }}. </b>\n {{ errorMsg() }}\n </p>\n }\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"person-circle\" color=\"primary\" />\n </ion-label>\n <ion-input\n testId=\"signup.email\"\n type=\"email\"\n inputmode=\"email\"\n pattern=\"[A-Za-z0-9._%+-]{2,}@[a-zA-Z-_.]{2,}[.]{1}[a-zA-Z]{2,}\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocomplete=\"off\"\n [placeholder]=\"'IDEA_AUTH.EMAIL' | translate\"\n [title]=\"'IDEA_AUTH.REGISTRATION_EMAIL_HINT' | translate\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"email\"\n (keyup.enter)=\"register()\"\n />\n </ion-item>\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"key\" color=\"primary\" />\n </ion-label>\n <ion-input\n testId=\"signup.password\"\n type=\"password\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocomplete=\"off\"\n [pattern]=\"_auth.getPasswordPolicyPatternForInput()\"\n [clearOnEdit]=\"false\"\n [placeholder]=\"'IDEA_AUTH.PASSWORD' | translate\"\n [title]=\"'IDEA_AUTH.CHOOSE_A_PASSWORD' | translate\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"password\"\n (keyup.enter)=\"register()\"\n />\n <ion-button\n testId=\"openPasswordPolicyButton\"\n slot=\"end\"\n fill=\"clear\"\n color=\"dark\"\n (click)=\"openPasswordPolicy($event)\"\n >\n <ion-icon icon=\"help-circle-outline\" slot=\"icon-only\" />\n </ion-button>\n </ion-item>\n @if (\n translationExists('IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL') ||\n translationExists('IDEA_VARIABLES.PRIVACY_POLICY_URL')\n ) {\n <ion-row class=\"agreementsAcceptanceRow\">\n <ion-col>\n <ion-checkbox size=\"small\" [ngModelOptions]=\"{ standalone: true }\" [(ngModel)]=\"agreementsCheck\" />\n {{ 'IDEA_AUTH.AGREEMENTS_CHECK_REGISTRATION' | translate }}:\n @if (translationExists('IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL')) {\n <a\n ion-text\n testId=\"openTermsAndConditionsButton\"\n color=\"primary\"\n target=\"_blank\"\n [title]=\"'IDEA_AUTH.TERMS_AND_CONDITIONS_HINT' | translate\"\n [href]=\"'IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL' | translate\"\n >\n {{ 'IDEA_AUTH.TERMS_AND_CONDITIONS' | translate }}\n </a>\n }\n @if (\n translationExists('IDEA_VARIABLES.PRIVACY_POLICY_URL') &&\n translationExists('IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL')\n ) {\n <ion-text> & </ion-text>\n }\n @if (translationExists('IDEA_VARIABLES.PRIVACY_POLICY_URL')) {\n <a\n ion-text\n testId=\"openPrivacyPolicyButton\"\n color=\"primary\"\n target=\"_blank\"\n [title]=\"'IDEA_AUTH.PRIVACY_POLICY_HINT' | translate\"\n [href]=\"'IDEA_VARIABLES.PRIVACY_POLICY_URL' | translate\"\n >\n {{ 'IDEA_AUTH.PRIVACY_POLICY' | translate }}\n </a>\n }\n </ion-col>\n </ion-row>\n }\n <ion-button\n testId=\"signUpButton\"\n expand=\"block\"\n [disabled]=\"!agreementsCheck\"\n [title]=\"'IDEA_AUTH.CREATE_AN_ACCOUNT_HINT' | translate\"\n (click)=\"register()\"\n >\n {{ 'IDEA_AUTH.CREATE_AN_ACCOUNT' | translate }}\n </ion-button>\n <ion-button\n testId=\"resendLinkButton\"\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"'IDEA_AUTH.HAVEN_T_RECEIVED_CONFIRMATION_LINK_HINT' | translate\"\n (click)=\"goToResendLink()\"\n >\n {{ 'IDEA_AUTH.HAVEN_T_RECEIVED_CONFIRMATION_LINK' | translate }}\n </ion-button>\n <ion-button\n testId=\"backToSignInButton\"\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"'IDEA_AUTH.BACK_TO_SIGN_IN_HINT' | translate\"\n (click)=\"goToAuth()\"\n >\n {{ 'IDEA_AUTH.BACK_TO_SIGN_IN' | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n </form>\n </ion-content>\n `,\n styleUrls: ['auth.scss']\n})\nexport class IDEASignUpPage implements OnInit {\n protected _env = inject(IDEAEnvironment);\n private _nav = inject(NavController);\n private _popover = inject(PopoverController);\n private _message = inject(IDEAMessageService);\n private _loading = inject(IDEALoadingService);\n private _translate = inject(IDEATranslationsService);\n public _auth = inject(IDEAAuthService);\n\n email: string;\n password: string;\n agreementsCheck = false;\n passwordPolicy: any;\n errorMsg = signal<string>(null);\n\n constructor() {\n this.passwordPolicy = this._env.idea.auth.passwordPolicy;\n }\n ngOnInit(): void {\n if (!this._env.idea.auth.registrationIsPossible) return this.goToAuth();\n this.agreementsCheck =\n this._translate._('IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL') ||\n this._translate._('IDEA_VARIABLES.PRIVACY_POLICY_URL')\n ? this.agreementsCheck\n : true;\n }\n\n async register(): Promise<void> {\n try {\n await this._loading.show();\n this.errorMsg.set(null);\n if (isEmpty(this.email, 'email')) this.errorMsg.set(this._translate._('IDEA_AUTH.VALID_EMAIL_OBLIGATORY'));\n else {\n const errors = this._auth.validatePasswordAgainstPolicy(this.password);\n if (errors.length === 0 && this.passwordPolicy.advancedPasswordCheck) {\n const emailParts = [...this.email?.split('@')[0].split(/\\W/g)];\n errors.push(...(await this._auth.validatePasswordAgainstDatabases(this.password, emailParts)));\n }\n if (errors.length)\n this.errorMsg.set(\n [\n this._translate._('IDEA_AUTH.PASSWORD_REQUIREMENTS_FOLLOW'),\n ...errors.map(x =>\n this._translate._('IDEA_AUTH.PASSWORD_REQUIREMENTS.'.concat(x), { n: this.passwordPolicy.minLength })\n )\n ].join(' ')\n );\n }\n if (this.errorMsg()) return this._message.error('IDEA_AUTH.REGISTRATION_FAILED');\n await this._auth.register(this.email, this.password);\n this._message.success('IDEA_AUTH.REGISTRATION_COMPLETED');\n this.goToAuth();\n } catch (err) {\n this.errorMsg.set((err as any).message);\n this._message.error('IDEA_AUTH.REGISTRATION_FAILED');\n } finally {\n this._loading.hide();\n }\n }\n\n translationExists(key: string): boolean {\n return !!this._translate._(key);\n }\n\n async openPasswordPolicy(event: Event): Promise<void> {\n const cssClass = 'passwordPolicyPopover';\n const popover = await this._popover.create({ component: IDEAPasswordPolicyComponent, event, cssClass });\n await popover.present();\n }\n\n goToResendLink(): void {\n this._nav.navigateForward(['auth', 'resend-link']);\n }\n goToAuth(): void {\n this._nav.navigateBack(['auth']);\n }\n}\n","import { Component, OnInit, inject, ChangeDetectionStrategy, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n NavController,\n PopoverController,\n IonContent,\n IonCard,\n IonCardHeader,\n IonCardTitle,\n IonCardSubtitle,\n IonCardContent,\n IonItem,\n IonLabel,\n IonIcon,\n IonButton,\n IonInput\n} from '@ionic/angular/standalone';\nimport {\n IDEAEnvironment,\n IDEAMessageService,\n IDEALoadingService,\n IDEATranslationsService,\n IDEATranslatePipe\n} from '@idea-ionic/common';\n\nimport { IDEAPasswordPolicyComponent } from './passwordPolicy.component';\nimport { IDEAAuthService } from './auth.service';\n\n@Component({\n selector: 'idea-new-password',\n imports: [\n FormsModule,\n IDEATranslatePipe,\n IonButton,\n IonIcon,\n IonLabel,\n IonItem,\n IonCardContent,\n IonCardSubtitle,\n IonCardTitle,\n IonCardHeader,\n IonCard,\n IonContent,\n IonInput\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ion-content>\n <form class=\"flexBox\">\n <ion-card class=\"authCard\">\n <ion-card-header>\n <ion-card-title color=\"primary\">{{ 'IDEA_AUTH.CHOOSE_A_PASSWORD' | translate }}</ion-card-title>\n <ion-card-subtitle>{{ 'IDEA_AUTH.YOU_NEED_TO_CHOOSE_A_NEW_PASSWORD' | translate }}</ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n @if (errorMsg()) {\n <p testId=\"newpassword.error\" class=\"errorBox\">\n <b> {{ 'IDEA_AUTH.ERROR' | translate }}. </b>\n {{ errorMsg() }}\n </p>\n }\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"key\" color=\"primary\" />\n </ion-label>\n <ion-input\n testId=\"newpassword.password\"\n type=\"password\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocomplete=\"new-password\"\n [pattern]=\"_auth.getPasswordPolicyPatternForInput()\"\n [clearOnEdit]=\"false\"\n [placeholder]=\"'IDEA_AUTH.PASSWORD' | translate\"\n [title]=\"'IDEA_AUTH.CHOOSE_A_PASSWORD' | translate\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"newPassword\"\n (keyup.enter)=\"confirmNewPassword()\"\n />\n <ion-button\n testId=\"openPasswordPolicyButton\"\n slot=\"end\"\n fill=\"clear\"\n color=\"dark\"\n (click)=\"openPasswordPolicy($event)\"\n >\n <ion-icon icon=\"help-circle-outline\" slot=\"icon-only\" />\n </ion-button>\n </ion-item>\n <ion-button\n testId=\"confirmNewPaswordButton\"\n expand=\"block\"\n [title]=\"'IDEA_AUTH.CONFIRM_NEW_PASSWORD_HINT' | translate\"\n (click)=\"confirmNewPassword()\"\n >\n {{ 'IDEA_AUTH.CONFIRM_NEW_PASSWORD' | translate }}\n </ion-button>\n <ion-button\n testId=\"backToSignInButton\"\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"'IDEA_AUTH.BACK_TO_SIGN_IN_HINT' | translate\"\n (click)=\"goToAuth()\"\n >\n {{ 'IDEA_AUTH.BACK_TO_SIGN_IN' | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n </form>\n </ion-content>\n `,\n styleUrls: ['auth.scss']\n})\nexport class IDEANewPasswordPage implements OnInit {\n protected _env = inject(IDEAEnvironment);\n private _nav = inject(NavController);\n private _popover = inject(PopoverController);\n private _message = inject(IDEAMessageService);\n private _loading = inject(IDEALoadingService);\n private _translate = inject(IDEATranslationsService);\n _auth = inject(IDEAAuthService);\n\n newPassword: string;\n passwordPolicy: any;\n errorMsg = signal<string>(null);\n\n constructor() {\n this.passwordPolicy = this._env.idea.auth.passwordPolicy;\n }\n ngOnInit(): void {\n if (!this._auth.challengeUsername) this.goToAuth();\n }\n\n async confirmNewPassword(): Promise<void> {\n try {\n await this._loading.show();\n this.errorMsg.set(null);\n const errors = this._auth.validatePasswordAgainstPolicy(this.newPassword);\n if (errors.length === 0 && this.passwordPolicy.advancedPasswordCheck)\n errors.push(...(await this._auth.validatePasswordAgainstDatabases(this.newPassword)));\n if (errors.length)\n this.errorMsg.set(\n [\n this._translate._('IDEA_AUTH.PASSWORD_REQUIREMENTS_FOLLOW'),\n ...errors.map(x =>\n this._translate._('IDEA_AUTH.PASSWORD_REQUIREMENTS.'.concat(x), { n: this.passwordPolicy.minLength })\n )\n ].join(' ')\n );\n if (this.errorMsg()) return this._message.error('IDEA_AUTH.PASSWORD_REQUIREMENTS_FOLLOW');\n await this._auth.confirmNewPassword(this.newPassword);\n window.location.assign('');\n } catch (error) {\n this.errorMsg.set((error as any).message);\n this._message.error('IDEA_AUTH.PASSWORD_REQUIREMENTS_FOLLOW');\n } finally {\n this._loading.hide();\n }\n }\n\n async openPasswordPolicy(event: Event): Promise<void> {\n const cssClass = 'passwordPolicyPopover';\n const popover = await this._popover.create({ component: IDEAPasswordPolicyComponent, event, cssClass });\n await popover.present();\n }\n\n goToAuth(): void {\n this._nav.navigateBack(['auth']);\n }\n}\n","import { Component, inject, signal, ChangeDetectionStrategy } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n NavController,\n IonContent,\n IonIcon,\n IonCard,\n IonCardHeader,\n IonCardTitle,\n IonCardContent,\n IonCardSubtitle,\n IonInput,\n IonItem,\n IonLabel,\n IonButton\n} from '@ionic/angular/standalone';\nimport { IDEAMessageService, IDEALoadingService, IDEATranslationsService, IDEATranslatePipe } from '@idea-ionic/common';\n\nimport { IDEAAuthService } from './auth.service';\n\n@Component({\n selector: 'idea-resend-link',\n imports: [\n FormsModule,\n IDEATranslatePipe,\n IonButton,\n IonLabel,\n IonItem,\n IonInput,\n IonCardSubtitle,\n IonCardContent,\n IonCardTitle,\n IonCardHeader,\n IonCard,\n IonIcon,\n IonContent,\n IonInput\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ion-content>\n <form class=\"flexBox\">\n <ion-card class=\"authCard\">\n <ion-card-header>\n <ion-card-title color=\"primary\">{{ 'IDEA_AUTH.CONFIRM_ACCOUNT' | translate }}</ion-card-title>\n <ion-card-subtitle>{{ 'IDEA_AUTH.RESEND_CONFIRMATION_LINK_HINT' | translate }}</ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n @if (errorMsg()) {\n <p testId=\"resendlink.error\" class=\"errorBox\">\n <b> {{ 'IDEA_AUTH.ERROR' | translate }}. </b>\n {{ errorMsg() }}\n </p>\n }\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"person-circle\" color=\"primary\" />\n </ion-label>\n <ion-input\n testId=\"resendlink.email\"\n type=\"email\"\n inputmode=\"email\"\n pattern=\"[A-Za-z0-9._%+-]{2,}@[a-zA-Z-_.]{2,}[.]{1}[a-zA-Z]{2,}\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocomplete=\"email\"\n [placeholder]=\"'IDEA_AUTH.EMAIL' | translate\"\n [title]=\"'IDEA_AUTH.EMAIL_HINT' | translate\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"email\"\n (keyup.enter)=\"resendConfirmationLink()\"\n />\n </ion-item>\n <ion-button\n testId=\"resendLinkButton\"\n expand=\"block\"\n [title]=\"'IDEA_AUTH.RESEND_LINK_HINT' | translate\"\n (click)=\"resendConfirmationLink()\"\n >\n {{ 'IDEA_AUTH.RESEND_LINK' | translate }}\n </ion-button>\n <ion-button\n testId=\"backToSignInButton\"\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"'IDEA_AUTH.BACK_TO_SIGN_IN_HINT' | translate\"\n (click)=\"goToAuth()\"\n >\n {{ 'IDEA_AUTH.BACK_TO_SIGN_IN' | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n </form>\n </ion-content>\n `,\n styleUrls: ['auth.scss']\n})\nexport class IDEAResendLinkPage {\n private _nav = inject(NavController);\n private _message = inject(IDEAMessageService);\n private _loading = inject(IDEALoadingService);\n private _auth = inject(IDEAAuthService);\n private _translate = inject(IDEATranslationsService);\n\n email: string;\n errorMsg = signal<string>(null);\n\n async resendConfirmationLink(): Promise<void> {\n this.errorMsg.set(null);\n if (!this.email) {\n this.errorMsg.set(this._translate._('IDEA_AUTH.VALID_EMAIL_OBLIGATORY'));\n this._message.error('IDEA_AUTH.SENDING_FAILED');\n return;\n }\n try {\n await this._loading.show();\n await this._auth.resendConfirmationCode(this.email);\n this._message.success('IDEA_AUTH.CONFIRMATION_LINK_SENT');\n this.goToAuth();\n } catch (error) {\n this.errorMsg.set(this._translate._('IDEA_AUTH.IS_THE_EMAIL_CORRECT'));\n this._message.error('IDEA_AUTH.SENDING_FAILED');\n } finally {\n this._loading.hide();\n }\n }\n\n goToAuth(): void {\n this._nav.navigateBack(['auth']);\n }\n}\n","import { Component, inject, ChangeDetectionStrategy } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n NavController,\n IonContent,\n IonCard,\n IonCardHeader,\n IonCardTitle,\n IonCardSubtitle,\n IonCardContent,\n IonItem,\n IonLabel,\n IonIcon,\n IonButton,\n IonInput\n} from '@ionic/angular/standalone';\nimport { IDEAMessageService, IDEALoadingService, IDEATranslatePipe } from '@idea-ionic/common';\n\nimport { IDEAAuthService } from './auth.service';\n\n@Component({\n selector: 'idea-forgot-password',\n imports: [\n FormsModule,\n IDEATranslatePipe,\n IonButton,\n IonIcon,\n IonLabel,\n IonItem,\n IonCardContent,\n IonCardSubtitle,\n IonCardTitle,\n IonCardHeader,\n IonCard,\n IonContent,\n IonInput\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ion-content>\n <form class=\"flexBox\">\n <ion-card class=\"authCard\">\n <ion-card-header>\n <ion-card-title color=\"primary\">{{ 'IDEA_AUTH.PASSWORD_RESET' | translate }}</ion-card-title>\n <ion-card-subtitle>{{ 'IDEA_AUTH.PASSWORD_RESET_HINT' | translate }}</ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"person-circle\" color=\"primary\" />\n </ion-label>\n <ion-input\n testId=\"forgotpassword.email\"\n type=\"email\"\n inputmode=\"email\"\n pattern=\"[A-Za-z0-9._%+-]{2,}@[a-zA-Z-_.]{2,}[.]{1}[a-zA-Z]{2,}\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocomplete=\"email\"\n [placeholder]=\"'IDEA_AUTH.EMAIL' | translate\"\n [title]=\"'IDEA_AUTH.EMAIL_HINT' | translate\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"email\"\n (keyup.enter)=\"forgotPassword()\"\n />\n </ion-item>\n <ion-button\n testId=\"resetPasswordButton\"\n expand=\"block\"\n [title]=\"'IDEA_AUTH.RESET_MY_PASSWORD_HINT' | translate\"\n (click)=\"forgotPassword()\"\n >\n {{ 'IDEA_AUTH.RESET_MY_PASSWORD' | translate }}\n </ion-button>\n <ion-button\n testId=\"insertResetCodeButton\"\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"'IDEA_AUTH.ALREADY_HAVE_A_RESET_CODE_HINT' | translate\"\n (click)=\"goToConfirmPassword()\"\n >\n {{ 'IDEA_AUTH.ALREADY_HAVE_A_RESET_CODE' | translate }}\n </ion-button>\n <ion-button\n testId=\"backToSignInButton\"\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"'IDEA_AUTH.BACK_TO_SIGN_IN_HINT' | translate\"\n (click)=\"goToAuth()\"\n >\n {{ 'IDEA_AUTH.BACK_TO_SIGN_IN' | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n </form>\n </ion-content>\n `,\n styleUrls: ['auth.scss']\n})\nexport class IDEAForgotPasswordPage {\n private _nav = inject(NavController);\n private _message = inject(IDEAMessageService);\n private _loading = inject(IDEALoadingService);\n private _auth = inject(IDEAAuthService);\n\n email: string;\n\n async forgotPassword(): Promise<void> {\n try {\n await this._loading.show();\n await this._auth.forgotPassword(this.email);\n this._message.success('IDEA_AUTH.PASSWORD_RESET_CODE_SENT');\n this.goToConfirmPassword();\n } catch (error) {\n this._message.error('IDEA_AUTH.USER_NOT_FOUND');\n } finally {\n this._loading.hide();\n }\n }\n\n goToConfirmPassword(): void {\n this._nav.navigateForward(['auth', 'confirm-password'], { queryParams: { email: this.email || null } });\n }\n goToAuth(): void {\n this._nav.navigateBack(['auth']);\n }\n}\n","import { Component, OnInit, inject, signal, ChangeDetectionStrategy } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n NavController,\n PopoverController,\n IonContent,\n IonCardHeader,\n IonCard,\n IonCardTitle,\n IonCardContent,\n IonItem,\n IonLabel,\n IonIcon,\n IonButton,\n IonInput\n} from '@ionic/angular/standalone';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n IDEAEnvironment,\n IDEAMessageService,\n IDEALoadingService,\n IDEATranslationsService,\n IDEATranslatePipe\n} from '@idea-ionic/common';\n\nimport { IDEAPasswordPolicyComponent } from './passwordPolicy.component';\nimport { IDEAAuthService } from './auth.service';\n\n@Component({\n selector: 'idea-confirm-password',\n imports: [\n FormsModule,\n IDEATranslatePipe,\n IonButton,\n IonIcon,\n IonLabel,\n IonItem,\n IonCardContent,\n IonCardTitle,\n IonCard,\n IonCardHeader,\n IonContent,\n IonInput\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ion-content>\n <form class=\"flexBox\">\n <ion-card class=\"authCard\">\n <ion-card-header>\n <ion-card-title color=\"primary\">{{ 'IDEA_AUTH.CHANGE_THE_PASSWORD' | translate }}</ion-card-title>\n </ion-card-header>\n <ion-card-content>\n @if (errorMsg()) {\n <p testId=\"confirmpassword.error\" class=\"errorBox\">\n <b> {{ 'IDEA_AUTH.ERROR' | translate }}. </b>\n {{ errorMsg() }}\n </p>\n }\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"person-circle\" color=\"primary\" />\n </ion-label>\n <ion-input\n testId=\"confirmpassword.email\"\n type=\"email\"\n inputmode=\"email\"\n pattern=\"[A-Za-z0-9._%+-]{2,}@[a-zA-Z-_.]{2,}[.]{1}[a-zA-Z]{2,}\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocomplete=\"email\"\n [placeholder]=\"'IDEA_AUTH.EMAIL' | translate\"\n [title]=\"'IDEA_AUTH.EMAIL_HINT' | translate\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"email\"\n (keyup.enter)=\"confirmPassword()\"\n />\n </ion-item>\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"disc\" color=\"primary\" />\n </ion-label>\n <ion-input\n testId=\"confirmpassword.code\"\n type=\"text\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocomplete=\"off\"\n [placeholder]=\"'IDEA_AUTH.RESET_CODE' | translate\"\n [title]=\"'IDEA_AUTH.RESET_CODE_HINT' | translate\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"code\"\n (keyup.enter)=\"confirmPassword()\"\n />\n </ion-item>\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"key\" color=\"primary\" />\n </ion-label>\n <ion-input\n testId=\"confirmpassword.password\"\n type=\"password\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocomplete=\"new-password\"\n [pattern]=\"_auth.getPasswordPolicyPatternForInput()\"\n [clearOnEdit]=\"false\"\n [placeholder]=\"'IDEA_AUTH.NEW_PASSWORD' | translate\"\n [title]=\"'IDEA_AUTH.CHOOSE_A_PASSWORD' | translate\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"newPassword\"\n (keyup.enter)=\"confirmPassword()\"\n />\n <ion-button\n testId=\"openPasswordPolicyButton\"\n slot=\"end\"\n fill=\"clear\"\n color=\"dark\"\n (click)=\"openPasswordPolicy($event)\"\n >\n <ion-icon icon=\"help-circle-outline\" slot=\"icon-only\" />\n </ion-button>\n </ion-item>\n <ion-button\n testId=\"changePasswordButton\"\n expand=\"block\"\n [title]=\"'IDEA_AUTH.CHANGE_MY_PASSWORD_HINT' | translate\"\n (click)=\"confirmPassword()\"\n >\n {{ 'IDEA_AUTH.CHANGE_MY_PASSWORD' | translate }}\n </ion-button>\n <ion-button\n testId=\"haventReceivedResetCodeButton\"\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"'IDEA_AUTH.HAVEN_T_RECEIVED_A_RESET_CODE_HINT' | translate\"\n (click)=\"goToForgotPassword()\"\n >\n {{ 'IDEA_AUTH.HAVEN_T_RECEIVED_A_RESET_CODE' | translate }}\n </ion-button>\n <ion-button\n testId=\"backToSignInButton\"\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"'IDEA_AUTH.BACK_TO_SIGN_IN_HINT' | translate\"\n (click)=\"goToAuth()\"\n >\n {{ 'IDEA_AUTH.BACK_TO_SIGN_IN' | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n </form>\n </ion-content>\n `,\n styleUrls: ['auth.scss']\n})\nexport class IDEAConfirmPasswordPage implements OnInit {\n protected _env = inject(IDEAEnvironment);\n private _nav = inject(NavController);\n private _route = inject(ActivatedRoute);\n private _popover = inject(PopoverController);\n private _message = inject(IDEAMessageService);\n private _loading = inject(IDEALoadingService);\n private _translate = inject(IDEATranslationsService);\n _auth = inject(IDEAAuthService);\n\n email: string;\n newPassword: string;\n code: string;\n passwordPolicy: any;\n errorMsg = signal<string>(null);\n\n constructor() {\n this.passwordPolicy = this._env.idea.auth.passwordPolicy;\n }\n ngOnInit(): void {\n this.email = this._route.snapshot.queryParamMap.get('email') || null;\n if (!this.email && this._route.snapshot.queryParams.user)\n this.email = decodeURIComponent(this._route.snapshot.queryParams.user);\n this.code = this._route.snapshot.queryParams.code;\n }\n\n async confirmPassword(): Promise<void> {\n try {\n await this._loading.show();\n this.errorMsg.set(null);\n const errors = this._auth.validatePasswordAgainstPolicy(this.newPassword);\n if (errors.length === 0 && this.passwordPolicy.advancedPasswordCheck) {\n const emailParts = [...this.email?.split('@')[0].split(/\\W/g)];\n errors.push(...(await this._auth.validatePasswordAgainstDatabases(this.newPassword, emailParts)));\n }\n if (errors.length)\n this.errorMsg.set(\n [\n this._translate._('IDEA_AUTH.PASSWORD_REQUIREMENTS_FOLLOW'),\n ...errors.map(x =>\n this._translate._('IDEA_AUTH.PASSWORD_REQUIREMENTS.'.concat(x), { n: this.passwordPolicy.minLength })\n )\n ].join(' ')\n );\n if (this.errorMsg()) return this._message.error('IDEA_AUTH.PASSWORD_REQUIREMENTS_FOLLOW');\n await this._auth.confirmPassword(this.email, this.code, this.newPassword);\n this._message.success('IDEA_AUTH.PASSWORD_CHANGED');\n this.goToAuth();\n } catch (error) {\n this.errorMsg.set((error as any).message);\n this._message.error('IDEA_AUTH.PASSWORD_REQUIREMENTS_FOLLOW');\n } finally {\n this._loading.hide();\n }\n }\n\n async openPasswordPolicy(event: Event): Promise<void> {\n const cssClass = 'passwordPolicyPopover';\n const popover = await this._popover.create({ component: IDEAPasswordPolicyComponent, event, cssClass });\n await popover.present();\n }\n\n goToForgotPassword(): void {\n this._nav.navigateBack(['auth', 'forgot-password']);\n }\n goToAuth(): void {\n this._nav.navigateBack(['auth']);\n }\n}\n","import { Component, OnInit, inject, signal, ChangeDetectionStrategy } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n NavController,\n IonContent,\n IonCard,\n IonCardHeader,\n IonCardTitle,\n IonCardSubtitle,\n IonItem,\n IonCardContent,\n IonLabel,\n IonIcon,\n IonButton,\n IonInput\n} from '@ionic/angular/standalone';\nimport { IDEAMessageService, IDEALoadingService, IDEATranslationsService, IDEATranslatePipe } from '@idea-ionic/common';\n\nimport { IDEAAuthService } from './auth.service';\n\n@Component({\n selector: 'idea-mfa-challenge',\n imports: [\n FormsModule,\n IDEATranslatePipe,\n IonButton,\n IonIcon,\n IonLabel,\n IonCardContent,\n IonItem,\n IonCardSubtitle,\n IonCardTitle,\n IonCardHeader,\n IonCard,\n IonContent,\n IonInput\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ion-content>\n <form class=\"flexBox\">\n <ion-card class=\"authCard\">\n <ion-card-header>\n <ion-card-title color=\"primary\">{{ 'IDEA_AUTH.ENTER_OTP_CODE' | translate }}</ion-card-title>\n <ion-card-subtitle>{{ 'IDEA_AUTH.ENTER_OTP_CODE_I' | translate }}</ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n @if (errorMsg()) {\n <p testId=\"mfachallenge.error\" class=\"errorBox\">\n <b>{{ 'IDEA_AUTH.ERROR' | translate }}.</b>\n {{ errorMsg() }}\n </p>\n }\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"key\" color=\"primary\" />\n </ion-label>\n <ion-input\n testId=\"mfachallenge.otpcode\"\n inputmode=\"numeric\"\n [placeholder]=\"'IDEA_AUTH.OTP_CODE' | translate\"\n [title]=\"'IDEA_AUTH.ENTER_OTP_CODE' | translate\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"otpCode\"\n (keyup.enter)=\"completeMFAChallenge()\"\n />\n </ion-item>\n <ion-button\n testId=\"confirmOTPCodeButton\"\n expand=\"block\"\n [title]=\"'IDEA_AUTH.CONFIRM_OTP_CODE_HINT' | translate\"\n (click)=\"completeMFAChallenge()\"\n >\n {{ 'IDEA_AUTH.CONFIRM_OTP_CODE' | translate }}\n </ion-button>\n <ion-button\n testId=\"backToSignInButton\"\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"'IDEA_AUTH.BACK_TO_SIGN_IN_HINT' | translate\"\n (click)=\"goToAuth()\"\n >\n {{ 'IDEA_AUTH.BACK_TO_SIGN_IN' | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n </form>\n </ion-content>\n `,\n styleUrls: ['auth.scss']\n})\nexport class IDEAMFAChallengePage implements OnInit {\n private _nav = inject(NavController);\n private _message = inject(IDEAMessageService);\n private _loading = inject(IDEALoadingService);\n private _auth = inject(IDEAAuthService);\n private _translate = inject(IDEATranslationsService);\n\n otpCode: string;\n errorMsg = signal<string>(null);\n\n ngOnInit(): void {\n if (!this._auth.challengeUsername) this.goToAuth();\n }\n\n async completeMFAChallenge(): Promise<void> {\n try {\n this.errorMsg.set(null);\n await this._loading.show();\n await this._auth.completeMFAChallenge(this.otpCode);\n window.location.assign('');\n } catch (error) {\n this.errorMsg.set(this._translate._('IDEA_AUTH.INVALID_OTP_CODE'));\n this._message.error(this.errorMsg(), { dontTranslate: true });\n } finally {\n this._loading.hide();\n }\n }\n\n goToAuth(): void {\n this._nav.navigateBack(['auth']);\n }\n}\n","import { Component, OnInit, inject, signal, ChangeDetectionStrategy } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n ModalController,\n IonHeader,\n IonToolbar,\n IonButtons,\n IonButton,\n IonIcon,\n IonTitle,\n IonContent,\n IonList,\n IonListHeader,\n IonLabel,\n IonCard,\n IonCardContent,\n IonItem,\n IonInput\n} from '@ionic/angular/standalone';\nimport { toCanvas } from 'qrcode';\nimport { IDEALoadingService, IDEAMessageService, IDEATranslatePipe } from '@idea-ionic/common';\n\nimport { IDEAAuthService } from '../auth.service';\n\n@Component({\n selector: 'idea-setup-mfa-modal',\n imports: [\n FormsModule,\n IDEATranslatePipe,\n IonItem,\n IonCardContent,\n IonCard,\n IonLabel,\n IonListHeader,\n IonList,\n IonContent,\n IonTitle,\n IonIcon,\n IonButton,\n IonButtons,\n IonToolbar,\n IonHeader,\n IonInput\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button [title]=\"'COMMON.CLOSE' | translate\" (click)=\"close()\">\n <ion-icon name=\"close-circle-outline\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n <ion-title>{{ (isMFAEnabled() ? 'IDEA_AUTH.DISABLE_MFA' : 'IDEA_AUTH.SETUP_MFA') | translate }}</ion-title>\n </ion-toolbar>\n </ion-header>\n <ion-content class=\"ion-padding\">\n <ion-list class=\"aList\">\n <ion-list-header>\n <ion-label class=\"ion-text-center\">\n <h2>{{ (isMFAEnabled() ? 'IDEA_AUTH.DISABLE_MFA_I' : 'IDEA_AUTH.SETUP_MFA_I') | translate }}</h2>\n <p>{{ (isMFAEnabled() ? 'IDEA_AUTH.DISABLE_MFA_II' : 'IDEA_AUTH.SETUP_MFA_II') | translate }}</p>\n </ion-label>\n </ion-list-header>\n <ion-card color=\"white\">\n <ion-card-content>\n @if (!isMFAEnabled()) {\n <div id=\"qrCodeContainer\"></div>\n }\n <ion-item color=\"light\">\n <ion-input\n type=\"text\"\n inputmode=\"numeric\"\n labelPlacement=\"floating\"\n [label]=\"'IDEA_AUTH.OTP_CODE' | translate\"\n [(ngModel)]=\"otpCode\"\n />\n </ion-item>\n <ion-button expand=\"block\" class=\"ion-margin-top\" [disabled]=\"!otpCode\" (click)=\"setMFA(!isMFAEnabled())\">\n {{ (isMFAEnabled() ? 'IDEA_AUTH.DISABLE_MFA' : 'IDEA_AUTH.ENABLE_MFA') | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n </ion-list>\n </ion-content>\n `,\n styles: [\n `\n ion-list.aList {\n padding-top: 0;\n ion-card {\n margin: 10px auto;\n max-width: 300px;\n }\n #qrCodeContainer {\n width: 180px;\n margin: 10px auto;\n }\n }\n `\n ]\n})\nexport class IDEASetupMFAModalComponent implements OnInit {\n private _modal = inject(ModalController);\n private _loading = inject(IDEALoadingService);\n private _message = inject(IDEAMessageService);\n private _auth = inject(IDEAAuthService);\n\n otpCode: string;\n isMFAEnabled = signal<boolean>(undefined);\n\n async ngOnInit(): Promise<void> {\n try {\n await this._loading.show();\n this.isMFAEnabled.set(await this._auth.checkIfUserHasMFAEnabled(true));\n if (!this.isMFAEnabled()) {\n const url = await this._auth.getURLForEnablingMFA();\n await this.generateQRCodeCanvasByURL(url);\n }\n } catch (error) {\n this._message.error('COMMON.OPERATION_FAILED');\n } finally {\n this._loading.hide();\n }\n }\n private generateQRCodeCanvasByURL(url: string): Promise<void> {\n return new Promise((resolve, reject): void => {\n const container = document.getElementById('qrCodeContainer');\n container.innerHTML = '';\n toCanvas(url, { errorCorrectionLevel: 'L' }, (err: Error, canvas: HTMLCanvasElement): void => {\n if (err) return reject(err);\n canvas.style.width = '100%';\n canvas.style.height = '100%';\n canvas.style.borderRadius = '4px';\n container.appendChild(canvas);\n resolve();\n });\n });\n }\n\n async setMFA(enable: boolean): Promise<void> {\n if (!this.otpCode) return;\n try {\n await this._loading.show();\n if (enable) await this._auth.enableMFA(this.otpCode);\n else await this._auth.disableMFA(this.otpCode);\n this.isMFAEnabled.set(enable);\n this._message.success('COMMON.OPERATION_COMPLETED');\n this._modal.dismiss({ enabled: enable });\n } catch (error) {\n this._message.error('COMMON.OPERATION_FAILED');\n } finally {\n this._loading.hide();\n }\n }\n\n close(): void {\n this._modal.dismiss();\n }\n}\n","import { Component, OnInit, inject, ChangeDetectionStrategy, output, input, signal } from '@angular/core';\nimport { ModalController, IonButton } from '@ionic/angular/standalone';\nimport { IDEATranslatePipe } from '@idea-ionic/common';\n\nimport { IDEASetupMFAModalComponent } from './setupMFAModal.component';\nimport { IDEAAuthService } from '../auth.service';\n\n@Component({\n selector: 'idea-setup-mfa-button',\n imports: [IDEATranslatePipe, IonButton],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (isMFAEnabled() !== undefined) {\n <ion-button [color]=\"color()\" [fill]=\"fill()\" (click)=\"openMFAModal()\">\n {{ (isMFAEnabled() ? 'IDEA_AUTH.DISABLE_MFA' : 'IDEA_AUTH.SETUP_MFA') | translate }}\n </ion-button>\n }\n `\n})\nexport class IDEASetupMFAButtonComponent implements OnInit {\n private _modal = inject(ModalController);\n private _auth = inject(IDEAAuthService);\n\n /**\n * The color of the button.\n */\n readonly color = input<string>();\n /**\n * The fill option for the button.\n */\n readonly fill = input<string>();\n /**\n * Trigger then the MFA setup changes.\n */\n readonly change = output<boolean>();\n\n isMFAEnabled = signal<boolean>(undefined);\n\n async ngOnInit(): Promise<void> {\n this.isMFAEnabled.set(await this._auth.checkIfUserHasMFAEnabled(true));\n }\n\n async openMFAModal(): Promise<void> {\n const modal = await this._modal.create({ component: IDEASetupMFAModalComponent, backdropDismiss: false });\n modal.onDidDismiss().then(({ data }): void => {\n if (data) {\n this.isMFAEnabled.set(data.enabled);\n this.change.emit(data.enabled);\n }\n });\n await modal.present();\n }\n}\n","import { Component, inject, ChangeDetectionStrategy } from '@angular/core';\nimport {\n NavController,\n IonContent,\n IonCard,\n IonCardHeader,\n IonCardTitle,\n IonCardSubtitle,\n IonCardContent,\n IonButton\n} from '@ionic/angular/standalone';\nimport { IDEATranslatePipe } from '@idea-ionic/common';\n\nimport { IDEASetupMFAButtonComponent } from './setupMFA/setupMFAButton.component';\n\n@Component({\n selector: 'idea-mfa-setup',\n imports: [\n IDEATranslatePipe,\n IDEASetupMFAButtonComponent,\n IonButton,\n IonCardContent,\n IonCardSubtitle,\n IonCardTitle,\n IonCardHeader,\n IonCard,\n IonContent\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ion-content>\n <form class=\"flexBox\">\n <ion-card class=\"authCard\">\n <ion-card-header>\n <ion-card-title color=\"primary\">{{ 'IDEA_AUTH.SETUP_MFA' | translate }}</ion-card-title>\n <ion-card-subtitle>{{ 'IDEA_AUTH.MFA_IS_MANDATORY' | translate }}</ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <idea-setup-mfa-button testId=\"setupMfaButton\" (change)=\"reloadApp()\" />\n <ion-button\n testId=\"backToSignInButton\"\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"'IDEA_AUTH.BACK_TO_SIGN_IN_HINT' | translate\"\n (click)=\"goToAuth()\"\n >\n {{ 'IDEA_AUTH.BACK_TO_SIGN_IN' | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n </form>\n </ion-content>\n `,\n styleUrls: ['auth.scss']\n})\nexport class IDEASetupMFAPage {\n private _nav = inject(NavController);\n\n reloadApp(): void {\n window.location.assign('');\n }\n goToAuth(): void {\n this._nav.navigateBack(['auth']);\n }\n}\n","import { Component, inject, signal, ChangeDetectionStrategy } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport {\n IonButton,\n IonCard,\n IonCardContent,\n IonCardHeader,\n IonCardTitle,\n IonContent,\n IonImg\n} from '@ionic/angular/standalone';\nimport { IDEAEnvironment, IDEATranslatePipe } from '@idea-ionic/common';\n\n@Component({\n selector: 'okta',\n imports: [IDEATranslatePipe, IonContent, IonCard, IonImg, IonCardHeader, IonCardTitle, IonCardContent, IonButton],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (!code() && !go()) {\n <ion-content>\n <div class=\"flexBox\">\n <ion-card class=\"authCard\">\n <ion-img\n [title]=\"'IDEA_AUTH.SERVICE_LOGO' | translate\"\n [src]=\"darkMode ? 'assets/icons/icon-auth-alt.svg' : 'assets/icons/icon-auth.svg'\"\n />\n @if (title) {\n <ion-card-header>\n <ion-card-title color=\"primary\">{{ title }}</ion-card-title>\n </ion-card-header>\n }\n <ion-card-content>\n @if (identityProvider()) {\n <ion-button expand=\"block\" [title]=\"'IDEA_AUTH.SIGN_IN_HINT' | translate\" (click)=\"startLogin()\">\n {{ 'IDEA_AUTH.SIGN_IN' | translate }}\n </ion-button>\n } @else {\n <p testId=\"signin.error\" class=\"errorBox\">\n <b>{{ 'IDEA_AUTH.UNKNOWN_PROVIDER' | translate }}.</b>\n </p>\n }\n </ion-card-content>\n </ion-card>\n </div>\n </ion-content>\n }\n `,\n styleUrls: ['auth.scss']\n})\nexport class IDEAOktaPage {\n private _route = inject(ActivatedRoute);\n private _router = inject(Router);\n private _env = inject(IDEAEnvironment);\n\n identityProvider = signal<string>(null);\n code = signal<string>(null);\n go = signal<boolean>(false);\n\n domain = this._env.aws.cognito.domain;\n clientId = this._env.aws.cognito.userPoolClientId;\n redirectURI = `${window.location.origin}${window.location.pathname}`; // Cognito client must include this callback\n scope = 'email openid profile aws.cognito.signin.user.admin'; // Cognito client config must match\n\n title = this._env.idea.auth.title;\n darkMode = window.matchMedia('(prefers-color-scheme: dark)').matches;\n\n ionViewWillEnter(): void {\n this.identityProvider.set(this._route.snapshot.queryParamMap.get('provider'));\n this.code.set(this._route.snapshot.queryParamMap.get('code'));\n this.go.set(!!this._route.snapshot.queryParamMap.get('go'));\n this._router.navigate([], { queryParams: {}, replaceUrl: true });\n if (this.code()) this.endLogin();\n else if (this.identityProvider() && this.go()) this.startLogin();\n }\n\n startLogin(): void {\n const url = `https://${this.domain}/oauth2/authorize`;\n const params = new URLSearchParams();\n params.append('identity_provider', this.identityProvider());\n params.append('redirect_uri', this.redirectURI);\n params.append('response_type', 'code');\n params.append('client_id', this.clientId);\n params.append('scope', this.scope);\n\n window.location.assign(`${url}?${params.toString()}`);\n }\n\n private async endLogin(): Promise<void> {\n const url = `https://${this.domain}/oauth2/token`;\n const params = new URLSearchParams();\n params.append('code', this.code());\n params.append('grant_type', 'authorization_code');\n params.append('redirect_uri', this.redirectURI);\n params.append('client_id', this.clientId);\n const headers = { 'Content-Type': 'application/x-www-form-urlencoded' };\n\n const response = await fetch(url, { method: 'POST', headers, body: params.toString() });\n if (!response.ok) throw new Error(`HTTP error! Status: ${response.status}`);\n const { id_token, access_token, refresh_token } = await response.json();\n\n storeCognitoSession(id_token, access_token, refresh_token);\n window.location.assign('');\n }\n}\n\n//\n// HELPERS\n//\n\n/**\n * Store the tokens and the info needed by Cognito's front-end lib to authenticate.\n */\nconst storeCognitoSession = (idToken: string, accessToken: string, refreshToken: string): void => {\n const { sub } = decodeJWTToken(idToken);\n const { client_id } = decodeJWTToken(accessToken);\n const prefix = `CognitoIdentityServiceProvider.${client_id}`;\n window.localStorage.setItem(`${prefix}.LastAuthUser`, sub);\n window.localStorage.setItem(`${prefix}.${sub}.accessToken`, accessToken);\n window.localStorage.setItem(`${prefix}.${sub}.idToken`, idToken);\n window.localStorage.setItem(`${prefix}.${sub}.refreshToken`, refreshToken);\n};\n\n/**\n * Decode a JWT token and return its payload as a JSON object.\n */\nconst decodeJWTToken = (token: string): any => {\n if (!token) return null;\n try {\n const base64Url = token.split('.')[1];\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n return JSON.parse(window.atob(base64));\n } catch (error) {\n console.error('Error decoding token:', error);\n return null;\n }\n};\n","import { Routes } from '@angular/router';\n\nimport { IDEASignInPage } from './signIn.page';\nimport { IDEASignUpPage } from './signUp.page';\nimport { IDEANewPasswordPage } from './newPassword.page';\nimport { IDEAResendLinkPage } from './resendLink.page';\nimport { IDEAForgotPasswordPage } from './forgotPassword.page';\nimport { IDEAConfirmPasswordPage } from './confirmPassword.page';\nimport { IDEAMFAChallengePage } from './mfaChallenge.page';\nimport { IDEASetupMFAPage } from './setupMFA.page';\nimport { IDEAOktaPage } from './okta.page';\n\nexport const routes: Routes = [\n { path: '', redirectTo: 'sign-in', pathMatch: 'full' },\n { path: 'sign-in', component: IDEASignInPage },\n { path: 'sign-up', component: IDEASignUpPage },\n { path: 'new-password', component: IDEANewPasswordPage },\n { path: 'mfa-challenge', component: IDEAMFAChallengePage },\n { path: 'setup-mfa', component: IDEASetupMFAPage },\n { path: 'resend-link', component: IDEAResendLinkPage },\n { path: 'forgot-password', component: IDEAForgotPasswordPage },\n { path: 'confirm-password', component: IDEAConfirmPasswordPage },\n { path: 'okta', component: IDEAOktaPage }\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"idea-ionic-auth.mjs","sources":["../../../modules/auth/src/commonPasswords.model.ts","../../../modules/auth/src/auth.service.ts","../../../modules/auth/src/signIn.page.ts","../../../modules/auth/src/passwordPolicy.component.ts","../../../modules/auth/src/signUp.page.ts","../../../modules/auth/src/newPassword.page.ts","../../../modules/auth/src/resendLink.page.ts","../../../modules/auth/src/forgotPassword.page.ts","../../../modules/auth/src/confirmPassword.page.ts","../../../modules/auth/src/mfaChallenge.page.ts","../../../modules/auth/src/setupMFA/setupMFAModal.component.ts","../../../modules/auth/src/setupMFA/setupMFAButton.component.ts","../../../modules/auth/src/setupMFA.page.ts","../../../modules/auth/src/okta.page.ts","../../../modules/auth/src/auth.routes.ts","../../../modules/auth/idea-ionic-auth.ts"],"sourcesContent":["export const COMMON_PASSWORDS_TOP_1000 = [\n '123456',\n 'password',\n '12345678',\n 'qwerty',\n '123456789',\n '12345',\n '1234',\n '111111',\n '1234567',\n 'dragon',\n '123123',\n 'baseball',\n 'abc123',\n 'football',\n 'monkey',\n 'letmein',\n '696969',\n 'shadow',\n 'master',\n '666666',\n 'qwertyuiop',\n '123321',\n 'mustang',\n '1234567890',\n 'michael',\n '654321',\n 'pussy',\n 'superman',\n '1qaz2wsx',\n '7777777',\n 'fuckyou',\n '121212',\n '000000',\n 'qazwsx',\n '123qwe',\n 'killer',\n 'trustno1',\n 'jordan',\n 'jennifer',\n 'zxcvbnm',\n 'asdfgh',\n 'hunter',\n 'buster',\n 'soccer',\n 'harley',\n 'batman',\n 'andrew',\n 'tigger',\n 'sunshine',\n 'iloveyou',\n 'fuckme',\n '2000',\n 'charlie',\n 'robert',\n 'thomas',\n 'hockey',\n 'ranger',\n 'daniel',\n 'starwars',\n 'klaster',\n '112233',\n 'george',\n 'asshole',\n 'computer',\n 'michelle',\n 'jessica',\n 'pepper',\n '1111',\n 'zxcvbn',\n '555555',\n '11111111',\n '131313',\n 'freedom',\n '777777',\n 'pass',\n 'fuck',\n 'maggie',\n '159753',\n 'aaaaaa',\n 'ginger',\n 'princess',\n 'joshua',\n 'cheese',\n 'amanda',\n 'summer',\n 'love',\n 'ashley',\n '6969',\n 'nicole',\n 'chelsea',\n 'biteme',\n 'matthew',\n 'access',\n 'yankees',\n '987654321',\n 'dallas',\n 'austin',\n 'thunder',\n 'taylor',\n 'matrix',\n 'william',\n 'corvette',\n 'hello',\n 'martin',\n 'heather',\n 'secret',\n 'fucker',\n 'merlin',\n 'diamond',\n '1234qwer',\n 'gfhjkm',\n 'hammer',\n 'silver',\n '222222',\n '88888888',\n 'anthony',\n 'justin',\n 'test',\n 'bailey',\n 'q1w2e3r4t5',\n 'patrick',\n 'internet',\n 'scooter',\n 'orange',\n '11111',\n 'golfer',\n 'cookie',\n 'richard',\n 'samantha',\n 'bigdog',\n 'guitar',\n 'jackson',\n 'whatever',\n 'mickey',\n 'chicken',\n 'sparky',\n 'snoopy',\n 'maverick',\n 'phoenix',\n 'camaro',\n 'sexy',\n 'peanut',\n 'morgan',\n 'welcome',\n 'falcon',\n 'cowboy',\n 'ferrari',\n 'samsung',\n 'andrea',\n 'smokey',\n 'steelers',\n 'joseph',\n 'mercedes',\n 'dakota',\n 'arsenal',\n 'eagles',\n 'melissa',\n 'boomer',\n 'booboo',\n 'spider',\n 'nascar',\n 'monster',\n 'tigers',\n 'yellow',\n 'xxxxxx',\n '123123123',\n 'gateway',\n 'marina',\n 'diablo',\n 'bulldog',\n 'qwer1234',\n 'compaq',\n 'purple',\n 'hardcore',\n 'banana',\n 'junior',\n 'hannah',\n '123654',\n 'porsche',\n 'lakers',\n 'iceman',\n 'money',\n 'cowboys',\n '987654',\n 'london',\n 'tennis',\n '999999',\n 'ncc1701',\n 'coffee',\n 'scooby',\n '0000',\n 'miller',\n 'boston',\n 'q1w2e3r4',\n 'fuckoff',\n 'brandon',\n 'yamaha',\n 'chester',\n 'mother',\n 'forever',\n 'johnny',\n 'edward',\n '333333',\n 'oliver',\n 'redsox',\n 'player',\n 'nikita',\n 'knight',\n 'fender',\n 'barney',\n 'midnight',\n 'please',\n 'brandy',\n 'chicago',\n 'badboy',\n 'iwantu',\n 'slayer',\n 'rangers',\n 'charles',\n 'angel',\n 'flower',\n 'bigdaddy',\n 'rabbit',\n 'wizard',\n 'bigdick',\n 'jasper',\n 'enter',\n 'rachel',\n 'chris',\n 'steven',\n 'winner',\n 'adidas',\n 'victoria',\n 'natasha',\n '1q2w3e4r',\n 'jasmine',\n 'winter',\n 'prince',\n 'panties',\n 'marine',\n 'ghbdtn',\n 'fishing',\n 'cocacola',\n 'casper',\n 'james',\n '232323',\n 'raiders',\n '888888',\n 'marlboro',\n 'gandalf',\n 'asdfasdf',\n 'crystal',\n '87654321',\n '12344321',\n 'sexsex',\n 'golden',\n 'blowme',\n 'bigtits',\n '8675309',\n 'panther',\n 'lauren',\n 'angela',\n 'bitch',\n 'spanky',\n 'thx1138',\n 'angels',\n 'madison',\n 'winston',\n 'shannon',\n 'mike',\n 'toyota',\n 'blowjob',\n 'jordan23',\n 'canada',\n 'sophie',\n 'Password',\n 'apples',\n 'dick',\n 'tiger',\n 'razz',\n '123abc',\n 'pokemon',\n 'qazxsw',\n '55555',\n 'qwaszx',\n 'muffin',\n 'johnson',\n 'murphy',\n 'cooper',\n 'jonathan',\n 'liverpoo',\n 'david',\n 'danielle',\n '159357',\n 'jackie',\n '1990',\n '123456a',\n '789456',\n 'turtle',\n 'horny',\n 'abcd1234',\n 'scorpion',\n 'qazwsxedc',\n '101010',\n 'butter',\n 'carlos',\n 'password1',\n 'dennis',\n 'slipknot',\n 'qwerty123',\n 'booger',\n 'asdf',\n '1991',\n 'black',\n 'startrek',\n '12341234',\n 'cameron',\n 'newyork',\n 'rainbow',\n 'nathan',\n 'john',\n '1992',\n 'rocket',\n 'viking',\n 'redskins',\n 'butthead',\n 'asdfghjkl',\n '1212',\n 'sierra',\n 'peaches',\n 'gemini',\n 'doctor',\n 'wilson',\n 'sandra',\n 'helpme',\n 'qwertyui',\n 'victor',\n 'florida',\n 'dolphin',\n 'pookie',\n 'captain',\n 'tucker',\n 'blue',\n 'liverpool',\n 'theman',\n 'bandit',\n 'dolphins',\n 'maddog',\n 'packers',\n 'jaguar',\n 'lovers',\n 'nicholas',\n 'united',\n 'tiffany',\n 'maxwell',\n 'zzzzzz',\n 'nirvana',\n 'jeremy',\n 'suckit',\n 'stupid',\n 'porn',\n 'monica',\n 'elephant',\n 'giants',\n 'jackass',\n 'hotdog',\n 'rosebud',\n 'success',\n 'debbie',\n 'mountain',\n '444444',\n 'xxxxxxxx',\n 'warrior',\n '1q2w3e4r5t',\n 'q1w2e3',\n '123456q',\n 'albert',\n 'metallic',\n 'lucky',\n 'azerty',\n '7777',\n 'shithead',\n 'alex',\n 'bond007',\n 'alexis',\n '1111111',\n 'samson',\n '5150',\n 'willie',\n 'scorpio',\n 'bonnie',\n 'gators',\n 'benjamin',\n 'voodoo',\n 'driver',\n 'dexter',\n '2112',\n 'jason',\n 'calvin',\n 'freddy',\n '212121',\n 'creative',\n '12345a',\n 'sydney',\n 'rush2112',\n '1989',\n 'asdfghjk',\n 'red123',\n 'bubba',\n '4815162342',\n 'passw0rd',\n 'trouble',\n 'gunner',\n 'happy',\n 'fucking',\n 'gordon',\n 'legend',\n 'jessie',\n 'stella',\n 'qwert',\n 'eminem',\n 'arthur',\n 'apple',\n 'nissan',\n 'bullshit',\n 'bear',\n 'america',\n '1qazxsw2',\n 'nothing',\n 'parker',\n '4444',\n 'rebecca',\n 'qweqwe',\n 'garfield',\n '01012011',\n 'beavis',\n '69696969',\n 'jack',\n 'asdasd',\n 'december',\n '2222',\n '102030',\n '252525',\n '11223344',\n 'magic',\n 'apollo',\n 'skippy',\n '315475',\n 'girls',\n 'kitten',\n 'golf',\n 'copper',\n 'braves',\n 'shelby',\n 'godzilla',\n 'beaver',\n 'fred',\n 'tomcat',\n 'august',\n 'buddy',\n 'airborne',\n '1993',\n '1988',\n 'lifehack',\n 'qqqqqq',\n 'brooklyn',\n 'animal',\n 'platinum',\n 'phantom',\n 'online',\n 'xavier',\n 'darkness',\n 'blink182',\n 'power',\n 'fish',\n 'green',\n '789456123',\n 'voyager',\n 'police',\n 'travis',\n '12qwaszx',\n 'heaven',\n 'snowball',\n 'lover',\n 'abcdef',\n '00000',\n 'pakistan',\n '007007',\n 'walter',\n 'playboy',\n 'blazer',\n 'cricket',\n 'sniper',\n 'hooters',\n 'donkey',\n 'willow',\n 'loveme',\n 'saturn',\n 'therock',\n 'redwings',\n 'bigboy',\n 'pumpkin',\n 'trinity',\n 'williams',\n 'tits',\n 'nintendo',\n 'digital',\n 'destiny',\n 'topgun',\n 'runner',\n 'marvin',\n 'guinness',\n 'chance',\n 'bubbles',\n 'testing',\n 'fire',\n 'november',\n 'minecraft',\n 'asdf1234',\n 'lasvegas',\n 'sergey',\n 'broncos',\n 'cartman',\n 'private',\n 'celtic',\n 'birdie',\n 'little',\n 'cassie',\n 'babygirl',\n 'donald',\n 'beatles',\n '1313',\n 'dickhead',\n 'family',\n '12121212',\n 'school',\n 'louise',\n 'gabriel',\n 'eclipse',\n 'fluffy',\n '147258369',\n 'lol123',\n 'explorer',\n 'beer',\n 'nelson',\n 'flyers',\n 'spencer',\n 'scott',\n 'lovely',\n 'gibson',\n 'doggie',\n 'cherry',\n 'andrey',\n 'snickers',\n 'buffalo',\n 'pantera',\n 'metallica',\n 'member',\n 'carter',\n 'qwertyu',\n 'peter',\n 'alexande',\n 'steve',\n 'bronco',\n 'paradise',\n 'goober',\n '5555',\n 'samuel',\n 'montana',\n 'mexico',\n 'dreams',\n 'michigan',\n 'cock',\n 'carolina',\n 'yankee',\n 'friends',\n 'magnum',\n 'surfer',\n 'poopoo',\n 'maximus',\n 'genius',\n 'cool',\n 'vampire',\n 'lacrosse',\n 'asd123',\n 'aaaa',\n 'christin',\n 'kimberly',\n 'speedy',\n 'sharon',\n 'carmen',\n '111222',\n 'kristina',\n 'sammy',\n 'racing',\n 'ou812',\n 'sabrina',\n 'horses',\n '0987654321',\n 'qwerty1',\n 'pimpin',\n 'baby',\n 'stalker',\n 'enigma',\n '147147',\n 'star',\n 'poohbear',\n 'boobies',\n '147258',\n 'simple',\n 'bollocks',\n '12345q',\n 'marcus',\n 'brian',\n '1987',\n 'qweasdzxc',\n 'drowssap',\n 'hahaha',\n 'caroline',\n 'barbara',\n 'dave',\n 'viper',\n 'drummer',\n 'action',\n 'einstein',\n 'bitches',\n 'genesis',\n 'hello1',\n 'scotty',\n 'friend',\n 'forest',\n '010203',\n 'hotrod',\n 'google',\n 'vanessa',\n 'spitfire',\n 'badger',\n 'maryjane',\n 'friday',\n 'alaska',\n '1232323q',\n 'tester',\n 'jester',\n 'jake',\n 'champion',\n 'billy',\n '147852',\n 'rock',\n 'hawaii',\n 'badass',\n 'chevy',\n '420420',\n 'walker',\n 'stephen',\n 'eagle1',\n 'bill',\n '1986',\n 'october',\n 'gregory',\n 'svetlana',\n 'pamela',\n '1984',\n 'music',\n 'shorty',\n 'westside',\n 'stanley',\n 'diesel',\n 'courtney',\n '242424',\n 'kevin',\n 'porno',\n 'hitman',\n 'boobs',\n 'mark',\n '12345qwert',\n 'reddog',\n 'frank',\n 'qwe123',\n 'popcorn',\n 'patricia',\n 'aaaaaaaa',\n '1969',\n 'teresa',\n 'mozart',\n 'buddha',\n 'anderson',\n 'paul',\n 'melanie',\n 'abcdefg',\n 'security',\n 'lucky1',\n 'lizard',\n 'denise',\n '3333',\n 'a12345',\n '123789',\n 'ruslan',\n 'stargate',\n 'simpsons',\n 'scarface',\n 'eagle',\n '123456789a',\n 'thumper',\n 'olivia',\n 'naruto',\n '1234554321',\n 'general',\n 'cherokee',\n 'a123456',\n 'vincent',\n 'Usuckballz1',\n 'spooky',\n 'qweasd',\n 'cumshot',\n 'free',\n 'frankie',\n 'douglas',\n 'death',\n '1980',\n 'loveyou',\n 'kitty',\n 'kelly',\n 'veronica',\n 'suzuki',\n 'semperfi',\n 'penguin',\n 'mercury',\n 'liberty',\n 'spirit',\n 'scotland',\n 'natalie',\n 'marley',\n 'vikings',\n 'system',\n 'sucker',\n 'king',\n 'allison',\n 'marshall',\n '1979',\n '098765',\n 'qwerty12',\n 'hummer',\n 'adrian',\n '1985',\n 'vfhbyf',\n 'sandman',\n 'rocky',\n 'leslie',\n 'antonio',\n '98765432',\n '4321',\n 'softball',\n 'passion',\n 'mnbvcxz',\n 'bastard',\n 'passport',\n 'horney',\n 'rascal',\n 'howard',\n 'franklin',\n 'bigred',\n 'assman',\n 'alexander',\n 'homer',\n 'redrum',\n 'jupiter',\n 'claudia',\n '55555555',\n '141414',\n 'zaq12wsx',\n 'shit',\n 'patches',\n 'nigger',\n 'cunt',\n 'raider',\n 'infinity',\n 'andre',\n '54321',\n 'galore',\n 'college',\n 'russia',\n 'kawasaki',\n 'bishop',\n '77777777',\n 'vladimir',\n 'money1',\n 'freeuser',\n 'wildcats',\n 'francis',\n 'disney',\n 'budlight',\n 'brittany',\n '1994',\n '00000000',\n 'sweet',\n 'oksana',\n 'honda',\n 'domino',\n 'bulldogs',\n 'brutus',\n 'swordfis',\n 'norman',\n 'monday',\n 'jimmy',\n 'ironman',\n 'ford',\n 'fantasy',\n '9999',\n '7654321',\n 'PASSWORD',\n 'hentai',\n 'duncan',\n 'cougar',\n '1977',\n 'jeffrey',\n 'house',\n 'dancer',\n 'brooke',\n 'timothy',\n 'super',\n 'marines',\n 'justice',\n 'digger',\n 'connor',\n 'patriots',\n 'karina',\n '202020',\n 'molly',\n 'everton',\n 'tinker',\n 'alicia',\n 'rasdzv3',\n 'poop',\n 'pearljam',\n 'stinky',\n 'naughty',\n 'colorado',\n '123123a',\n 'water',\n 'test123',\n 'ncc1701d',\n 'motorola',\n 'ireland',\n 'asdfg',\n 'slut',\n 'matt',\n 'houston',\n 'boogie',\n 'zombie',\n 'accord',\n 'vision',\n 'bradley',\n 'reggie',\n 'kermit',\n 'froggy',\n 'ducati',\n 'avalon',\n '6666',\n '9379992',\n 'sarah',\n 'saints',\n 'logitech',\n 'chopper',\n '852456',\n 'simpson',\n 'madonna',\n 'juventus',\n 'claire',\n '159951',\n 'zachary',\n 'yfnfif',\n 'wolverin',\n 'warcraft',\n 'hello123',\n 'extreme',\n 'penis',\n 'peekaboo',\n 'fireman',\n 'eugene',\n 'brenda',\n '123654789',\n 'russell',\n 'panthers',\n 'georgia',\n 'smith',\n 'skyline',\n 'jesus',\n 'elizabet',\n 'spiderma',\n 'smooth',\n 'pirate',\n 'empire',\n 'bullet',\n '8888',\n 'virginia',\n 'valentin',\n 'psycho',\n 'predator',\n 'arizona',\n '134679',\n 'mitchell',\n 'alyssa',\n 'vegeta',\n 'titanic',\n 'christ',\n 'goblue',\n 'fylhtq',\n 'wolf',\n 'mmmmmm',\n 'kirill',\n 'indian',\n 'hiphop',\n 'baxter',\n 'awesome',\n 'people',\n 'danger',\n 'roland',\n 'mookie',\n '741852963',\n '1111111111',\n 'dreamer',\n 'bambam',\n 'arnold',\n '1981',\n 'skipper',\n 'serega',\n 'rolltide',\n 'elvis',\n 'changeme',\n 'simon',\n '1q2w3e',\n 'lovelove',\n 'fktrcfylh',\n 'denver',\n 'tommy',\n 'mine',\n 'loverboy',\n 'hobbes',\n 'happy1',\n 'alison',\n 'nemesis',\n 'chevelle',\n 'cardinal',\n 'burton',\n 'wanker',\n 'picard',\n '151515',\n 'tweety',\n 'michael1',\n '147852369',\n '12312',\n 'xxxx',\n 'windows',\n 'turkey',\n '456789',\n '1974',\n 'vfrcbv',\n 'sublime',\n '1975',\n 'galina',\n 'bobby',\n 'newport',\n 'manutd',\n 'daddy',\n 'american',\n 'alexandr',\n '1966',\n 'victory',\n 'rooster',\n 'qqq111',\n 'madmax',\n 'electric',\n 'bigcock',\n 'a1b2c3',\n 'wolfpack',\n 'spring',\n 'phpbb',\n 'lalala',\n 'suckme',\n 'spiderman',\n 'eric',\n 'darkside',\n 'classic',\n 'raptor',\n '123456789q',\n 'hendrix',\n '1982',\n 'wombat',\n 'avatar',\n 'alpha',\n 'zxc123',\n 'crazy',\n 'hard',\n 'england',\n 'brazil',\n '1978',\n '01011980',\n 'wildcat',\n 'polina',\n 'freepass'\n];\n","import { Injectable, inject } from '@angular/core';\nimport {\n AuthenticationDetails,\n CognitoUser,\n CognitoUserAttribute,\n CognitoUserPool,\n CognitoRefreshToken,\n CognitoUserSession,\n ISignUpResult,\n ChallengeName\n} from 'amazon-cognito-identity-js';\nimport { IDEAEnvironment, IDEAStorageService, IDEATranslationsService } from '@idea-ionic/common';\n\nimport { COMMON_PASSWORDS_TOP_1000 } from './commonPasswords.model';\n\n/**\n * Cognito wrapper to manage the authentication flow.\n *\n * Note: in IDEA's Cognito users pools, the email is an alias of the username.\n */\n@Injectable({ providedIn: 'root' })\nexport class IDEAAuthService {\n protected _env = inject(IDEAEnvironment);\n protected _translate = inject(IDEATranslationsService);\n protected _storage = inject(IDEAStorageService);\n\n /**\n * The name of the Cognito's user attribute which contains the key of the last device to login in this project.\n */\n protected deviceKeyAttribute: string;\n\n private userPool: CognitoUserPool;\n\n challengeUsername: string;\n private challengePassword: string;\n\n private newAccountJustRegistered: string;\n\n private mfaProjectName: string;\n\n private passwordPolicy: any;\n\n constructor() {\n this.deviceKeyAttribute = 'custom:'.concat(this._env.idea.project);\n this.userPool = new CognitoUserPool({\n UserPoolId: this._env.aws.cognito.userPoolId,\n ClientId: this._env.aws.cognito.userPoolClientId\n });\n this.mfaProjectName = this._env.idea.auth.title || this._env.idea.project;\n this.passwordPolicy = this._env.idea.auth.passwordPolicy;\n }\n\n /**\n * Prepare the necessary structure to get authorized in Cognito.\n */\n private prepareAuthDetails(username: string, pwd: string): AuthenticationDetails {\n return new AuthenticationDetails({ Username: username, Password: pwd });\n }\n /**\n * Prepare the necessary structure to identify a Cognito user.\n */\n prepareCognitoUser(username: string): CognitoUser {\n return new CognitoUser({ Username: username, Pool: this.userPool });\n }\n /**\n * Prepare a user attribute (they are all strings) in Cognito's format.\n */\n private prepareUserAttribute(name: string, value: string): CognitoUserAttribute {\n return new CognitoUserAttribute({ Name: name, Value: value });\n }\n\n /**\n * Perform a login through username and password.\n */\n login(username: string, password: string): Promise<LoginOutcomeActions> {\n return new Promise((resolve, reject): void => {\n const user = this.prepareCognitoUser(username);\n user.authenticateUser(this.prepareAuthDetails(username, password), {\n onSuccess: (): void =>\n resolve(this._env.idea.auth.forceLoginWithMFA ? LoginOutcomeActions.MFA_SETUP : LoginOutcomeActions.NONE),\n onFailure: (err: Error): void => reject(err),\n newPasswordRequired: (): void => {\n this.challengeUsername = username;\n this.challengePassword = password;\n resolve(LoginOutcomeActions.NEW_PASSWORD);\n },\n totpRequired: (): void => {\n this.challengeUsername = username;\n this.challengePassword = password;\n resolve(LoginOutcomeActions.MFA_CHALLENGE);\n }\n });\n });\n }\n /**\n * Complete the new password flow in the authentication.\n */\n confirmNewPassword(newPassword: string): Promise<void> {\n return new Promise((resolve, reject): void => {\n const user = this.prepareCognitoUser(this.challengeUsername);\n user.authenticateUser(this.prepareAuthDetails(this.challengeUsername, this.challengePassword), {\n onSuccess: (): void => resolve(),\n onFailure: (err: Error): void => reject(err),\n newPasswordRequired: (): void =>\n user.completeNewPasswordChallenge(\n newPassword,\n {},\n {\n onSuccess: (): void => {\n this.challengeUsername = null;\n this.challengePassword = null;\n resolve();\n },\n onFailure: (err: Error): void => reject(err)\n }\n )\n });\n });\n }\n /**\n * Complete the MFA challenge flow in the authentication.\n */\n completeMFAChallenge(otpCode: string): Promise<void> {\n return new Promise((resolve, reject): void => {\n const user = this.prepareCognitoUser(this.challengeUsername);\n user.authenticateUser(this.prepareAuthDetails(this.challengeUsername, this.challengePassword), {\n onSuccess: (): void => resolve(),\n onFailure: (err: Error): void => reject(err),\n totpRequired: (challengeName: ChallengeName): void =>\n user.sendMFACode(\n otpCode,\n {\n onSuccess: (): void => {\n this.challengeUsername = null;\n this.challengePassword = null;\n resolve();\n },\n onFailure: err => reject(err)\n },\n challengeName\n )\n });\n });\n }\n /**\n * Register a new user a set its default attributes.\n */\n register(username: string, password: string, attributes?: any): Promise<CognitoUser> {\n attributes = attributes || {};\n return new Promise((resolve, reject): void => {\n // add attributes like the email address and the fullname\n const attrs = [];\n for (const prop in attributes)\n if (attributes[prop]) attrs.push(this.prepareUserAttribute(prop, attributes[prop]));\n // add the email, which is equal to the username for most of our Pools\n if (!attributes.email) attrs.push(this.prepareUserAttribute('email', username));\n // register the new user to the pool\n this.userPool.signUp(username, password, attrs, null, (err: Error, res: ISignUpResult): void => {\n if (err) return reject(err);\n this.newAccountJustRegistered = username;\n resolve(res.user);\n });\n });\n }\n /**\n * In case a new account has just been registered, return the username.\n */\n getNewAccountJustRegistered(): string {\n return this.newAccountJustRegistered;\n }\n /**\n * Confirm a new registration through the confirmation code sent by Cognito.\n */\n confirmRegistration(username: string, code: string): Promise<void> {\n return new Promise((resolve, reject): void => {\n this.prepareCognitoUser(username).confirmRegistration(code, true, (err: Error): void =>\n err ? reject(err) : resolve()\n );\n });\n }\n /**\n * Send again a confirmation code for a new registration.\n */\n resendConfirmationCode(username: string): Promise<void> {\n return new Promise((resolve, reject): void => {\n this.prepareCognitoUser(username).resendConfirmationCode((err: Error): void => (err ? reject(err) : resolve()));\n });\n }\n /**\n * Logout the currently signed-in user.\n */\n logout(options?: { global: boolean }): Promise<void> {\n options = Object.assign({ global: false }, options);\n return new Promise((resolve, reject): void => {\n // remove the refresh token previosly saved\n this._storage.remove('AuthRefreshToken').then(\n (): Promise<void> =>\n // remove the optional auth details\n this._storage.remove('AuthUserDetails').then((): void => {\n // get the user and the session\n const user = this.userPool.getCurrentUser();\n user.getSession(async (err: Error): Promise<void> => {\n // if the session is active, run the online sign-out; otherwise, only the local data has been deleted\n if (err) return resolve();\n // if a reference to the device was saved, forget it\n if (this._env.idea.auth.singleSimultaneousSession) await this.setCurrentDeviceForProject(null);\n // sign-out from the pool (terminate the current session or all the sessions)\n if (options.global)\n user.globalSignOut({ onSuccess: (): void => resolve(), onFailure: err => reject(err) });\n else {\n user.signOut();\n resolve();\n }\n });\n })\n );\n });\n }\n /**\n * Send a password reset request.\n */\n forgotPassword(username: string): Promise<void> {\n return new Promise((resolve, reject): void => {\n this.prepareCognitoUser(username).forgotPassword({\n onSuccess: (): void => resolve(),\n onFailure: (err: Error): void => reject(err)\n });\n });\n }\n /**\n * Confirm a new password after a password reset request.\n */\n confirmPassword(username: string, code: string, newPwd: string): Promise<void> {\n return new Promise((resolve, reject): void => {\n this.prepareCognitoUser(username).confirmPassword(code, newPwd, {\n onSuccess: (): void => resolve(),\n onFailure: (err: Error): void => reject(err)\n });\n });\n }\n /**\n * Gets the URL for enabling MFA. This URL can be used to generate a QR Code to read with an authenticator app.\n */\n getURLForEnablingMFA(): Promise<string> {\n return new Promise((resolve, reject): void => {\n const user = this.userPool.getCurrentUser();\n if (!user) return reject();\n user.getSession((err: Error): void => {\n if (err) return reject(err);\n user.associateSoftwareToken({\n associateSecretCode: (secretCode: string): void =>\n resolve(`otpauth://totp/${encodeURI(this.mfaProjectName)}?secret=${secretCode}`),\n onFailure: (err: any): void => reject(err)\n });\n });\n });\n }\n /**\n * Check whether the user has MFA enabled.\n */\n checkIfUserHasMFAEnabled(bypassCache = false): Promise<boolean> {\n return new Promise((resolve, reject): void => {\n const user = this.userPool.getCurrentUser();\n if (!user) return reject();\n user.getSession((err: Error): void => {\n if (err) return reject(err);\n user.getUserData(\n (err, data): void => {\n if (err) return reject(err);\n const isMFAEnabled = !!(data.UserMFASettingList && data.UserMFASettingList.includes('SOFTWARE_TOKEN_MFA'));\n resolve(isMFAEnabled);\n },\n { bypassCache }\n );\n });\n });\n }\n /**\n * Configure a MFA device for the user.\n */\n private setMFADevice(otp: string, mfaDeviceName: string, enabled = true, preferred = true): Promise<void> {\n return new Promise((resolve, reject): void => {\n const user = this.userPool.getCurrentUser();\n if (!user) return reject();\n user.getSession((err: Error): void => {\n if (err) return reject(err);\n user.verifySoftwareToken(otp, mfaDeviceName, {\n onSuccess: (): void =>\n user.setUserMfaPreference(null, { Enabled: enabled, PreferredMfa: preferred }, (err: Error): void =>\n err ? reject(err) : resolve()\n ),\n onFailure: (err): void => reject(err)\n });\n });\n });\n }\n /**\n * Enable a new MFA device for the user by inserting an OTP code generated by it.\n */\n enableMFA(otp: string, mfaDeviceName = 'default'): Promise<void> {\n return this.setMFADevice(otp, mfaDeviceName, true, true);\n }\n /**\n * Disable MFA for a user by inserting an OTP code generated by it.\n */\n disableMFA(otp: string, mfaDeviceName = 'default'): Promise<void> {\n return this.setMFADevice(otp, mfaDeviceName, false, false);\n }\n /**\n * Check if a user is currently authenticated.\n * @param offlineAllowed if set and if offline, skip authentication and retrieve data locally\n * @param getFreshIdTokenOnExp cb function to execute when the idToken is refreshed\n */\n isAuthenticated(offlineAllowed: boolean, getFreshIdTokenOnExp?: (freshIdToken: string) => void): Promise<any> {\n return new Promise((resolve, reject): void => {\n if (offlineAllowed && !navigator.onLine) {\n this._storage.get('AuthUserDetails').then(userDetails => resolve({ idToken: null, userDetails }));\n // re-execute the method when back online, so that you can retrieve a token to make requests\n window.addEventListener(\n 'online',\n (): Promise<void> =>\n this.isAuthenticated(true, getFreshIdTokenOnExp)\n // set the new token as if it was refreshed\n .then(result => getFreshIdTokenOnExp(result.idToken))\n );\n } else {\n const user = this.userPool.getCurrentUser();\n if (!user) return reject();\n user.getSession((err: Error, session: CognitoUserSession): void => {\n if (err) return reject(err);\n user.getUserData(\n (err, data): void => {\n if (err) return reject(err);\n const isMFAEnabled = !!(\n data.UserMFASettingList && data.UserMFASettingList.includes('SOFTWARE_TOKEN_MFA')\n );\n if (!isMFAEnabled && this._env.idea.auth.forceLoginWithMFA)\n return reject(new Error(LoginOutcomeActions.MFA_SETUP));\n user.getUserAttributes((e: Error, attributes: CognitoUserAttribute[]): void => {\n if (e) return reject(e);\n // remap user attributes\n const userDetails: any = {};\n attributes.forEach((a: CognitoUserAttribute): string => (userDetails[a.getName()] = a.getValue()));\n // add the user's groups to the attributes\n const sessionInfo = session.getAccessToken().decodePayload();\n const groups: string[] = sessionInfo['cognito:groups'] || [];\n userDetails['groups'] = groups;\n // run some checks considering the user's groups and devices (based on the project's configuration)\n this.runPostAuthChecks(userDetails, err => {\n // in case some check failed, reject the authorisation flow\n if (err) return reject(err);\n // (async) save the refresh token so it can be accessed by other procedures\n this._storage.set('AuthRefreshToken', session.getRefreshToken().getToken());\n // set a timer to manage the autorefresh of the idToken (through the refreshToken)\n setTimeout(\n (): void => this.refreshSession(user, session.getRefreshToken().getToken(), getFreshIdTokenOnExp),\n 15 * 60 * 1000\n ); // every 15 minutes\n // (async) if offlineAllowed, save data locally, to use it next time we'll be offline\n if (offlineAllowed) this._storage.set('AuthUserDetails', userDetails);\n // return the idToken (to use with API)\n resolve({ idToken: session.getIdToken().getJwtToken(), userDetails });\n });\n });\n },\n { bypassCache: true }\n );\n });\n }\n });\n }\n /**\n * Helper to refresh the session every N minutes.\n */\n private refreshSession(user: CognitoUser, refreshToken: string, callback: (freshIdToken: string) => void): void {\n user.refreshSession(\n new CognitoRefreshToken({ RefreshToken: refreshToken }),\n (err: Error, session: CognitoUserSession): void => {\n if (err) {\n // try again in 1 minute\n setTimeout((): void => this.refreshSession(user, refreshToken, callback), 1 * 60 * 1000);\n } else {\n // (async) save the refresh token so it can be accessed by other procedures\n this._storage.set('AuthRefreshToken', session.getRefreshToken().getToken());\n // repeat every 15 minutes\n setTimeout(\n (): void => this.refreshSession(user, session.getRefreshToken().getToken(), callback),\n 15 * 60 * 1000\n );\n // run the callback action, if set\n if (callback) callback(session.getIdToken().getJwtToken());\n }\n }\n );\n }\n /**\n * Run some post-auth checks, based on the users groups and on the app's configuration:\n * - users in the Cognito's \"admins\" grup skip all the following rules.\n * - users in the Cognito's \"robots\" group can't sign-into front-ends (they serve only back-end purposes).\n * - if `env.idea.auth.singleSimultaneousSession` is on, make sure there is only one active session per user.\n */\n private runPostAuthChecks(userDetails: any, callback: (err?: Error) => void): void | Promise<void> {\n const groups: string[] = userDetails['groups'];\n // skip checks if the user is in the \"admins\" group\n const isAdmin = groups.some(x => x === 'admins');\n if (isAdmin) return callback();\n // users in the \"robots\" group can't sign-into front-ends (they serve only back-end purposes)\n const isRobot = groups.some(x => x === 'robots');\n if (isRobot) return callback(new Error('ROBOT_USER'));\n // in case the project limits each account to only one simultaneous session, run a check\n if (this._env.idea.auth.singleSimultaneousSession) return this.checkForSimultaneousSessions(userDetails, callback);\n // otherwise, we're done\n callback();\n }\n /**\n * Check whether the user signed-into multiple devices.\n */\n private async checkForSimultaneousSessions(userDetails: any, callback: (err?: Error) => void): Promise<void> {\n // get or create a key for the current device (~random)\n let currentDeviceKey = await this._storage.get('AuthDeviceKey');\n if (!currentDeviceKey) {\n const randomKey = Math.random().toString(36).substring(10);\n currentDeviceKey = randomKey.concat(String(Date.now()));\n await this._storage.set('AuthDeviceKey', currentDeviceKey);\n }\n // check whether the last device to sign-into this project (if any) is the current one\n const lastDeviceToSignIntoThisProject = userDetails[this.deviceKeyAttribute];\n // if it's the first user's device to sign-in, save the reference in Cognito and resolve\n if (!lastDeviceToSignIntoThisProject) {\n this.setCurrentDeviceForProject(currentDeviceKey)\n .then((): void => callback())\n .catch((): void => callback(new Error('CANT_SET_DEVICE')));\n // if the device didn't change, resolve\n } else if (lastDeviceToSignIntoThisProject === currentDeviceKey) callback();\n // othwerwise, report there is more than one simultaneous session\n else callback(new Error('SIMULTANEOUS_SESSION'));\n }\n /**\n * Set (or reset) the current user's device (by key) in the current project (stored in Cognito).\n */\n private setCurrentDeviceForProject(deviceKey?: string): Promise<void> {\n const attributes: any = {};\n // note: an empty string will remove the attribute from Cognito\n attributes[this.deviceKeyAttribute] = deviceKey || '';\n return this.updateUserAttributes(attributes);\n }\n /**\n * Update the currently logged in user's attributes.\n */\n updateUserAttributes(attributes: any): Promise<void> {\n return new Promise((resolve, reject): void => {\n // prepare the attributes we want to change\n const attrs = new Array<any>();\n for (const prop in attributes)\n if (attributes[prop] !== undefined) attrs.push(this.prepareUserAttribute(prop, attributes[prop]));\n const user = this.userPool.getCurrentUser();\n if (!user) return reject();\n // we need to get the session before to make changes\n user.getSession((err: Error): void => {\n if (err) reject(err);\n else user.updateAttributes(attrs, (e: Error): void => (e ? reject(e) : resolve()));\n });\n });\n }\n\n /**\n * Validate the password against the policy set in the environments configuration.\n * In case there are errors, they are returned as an array of strings.\n */\n validatePasswordAgainstPolicy(password: string): string[] {\n const errors: string[] = [];\n if (password?.trim().length < this.passwordPolicy.minLength) errors.push('MIN_LENGTH');\n if (this.passwordPolicy.requireDigits && !/\\d/.test(password)) errors.push('REQUIRE_DIGITS');\n if (this.passwordPolicy.requireLowercase && !/[a-z]/.test(password)) errors.push('REQUIRE_LOWERCASE');\n if (this.passwordPolicy.requireSymbols && !/[\\^\\$\\*\\.\\_\\~\\`\\+\\=@\\!\\?\\>\\<\\:\\;\\\\\\,\\#\\%\\&]/.test(password))\n errors.push('REQUIRE_SYMBOLS');\n if (this.passwordPolicy.requireUppercase && !/[A-Z]/.test(password)) errors.push('REQUIRE_UPPERCASE');\n return errors;\n }\n /**\n * Validate the password against offline and online databases, to avoid common and exploited passwords.\n */\n async validatePasswordAgainstDatabases(password: string, customStringsToAvoid?: string[]): Promise<string[]> {\n const errors: string[] = [];\n let pwd = (password || '').trim().toLowerCase();\n const pwdContains = (str: string): boolean => pwd.includes((str || '').trim().toLowerCase());\n const projectReferencesToAvoid = [\n this._env.idea.project,\n this._env.idea.auth.title,\n this._translate._('COMMON.APP_NAME')\n ];\n if (projectReferencesToAvoid.some(x => pwdContains(x))) errors.push('COMMON_PASSWORD_PROJECT');\n if (customStringsToAvoid && customStringsToAvoid.some(x => pwdContains(x))) errors.push('COMMON_PASSWORD_CUSTOM');\n if (COMMON_PASSWORDS_TOP_1000.some(x => pwdContains(x))) errors.push('COMMON_PASSWORD_INTERNAL');\n if (errors.length === 0) {\n const pwdSHA1 = await SHA1(password);\n if (pwdSHA1) {\n const res = await fetch('https://api.pwnedpasswords.com/range/'.concat(pwdSHA1.slice(0, 5)));\n if (res.status === 200) {\n const pwnedPasswordsRawSuffixes = await res.text();\n if (pwnedPasswordsRawSuffixes.includes(pwdSHA1.slice(5))) errors.push('COMMON_PASSWORD_EXTERNAL');\n }\n }\n }\n return errors;\n }\n /**\n * Get a complete password policy pattern, based on the environments configuration, to use on password input fields.\n * Note: some of the symbols couldn't be included because unsupported by the input[pattern] attribute.\n */\n getPasswordPolicyPatternForInput(): string {\n let pattern = '';\n if (this.passwordPolicy.requireDigits) pattern += `(?=.*[0-9])`;\n if (this.passwordPolicy.requireLowercase) pattern += `(?=.*[a-z])`;\n if (this.passwordPolicy.requireSymbols) pattern += `(?=.*[\\^\\$\\*\\.\\_\\~\\`\\+\\=@\\!\\?\\>\\<\\:\\;\\\\\\,\\#\\%\\&])`;\n if (this.passwordPolicy.requireUppercase) pattern += `(?=.*[A-Z])`;\n pattern += `.{${this.passwordPolicy.minLength},}`;\n return pattern;\n }\n}\n\n/**\n * The possible actions following a successful login.\n */\nexport enum LoginOutcomeActions {\n NONE = 'none',\n NEW_PASSWORD = 'newPassword',\n MFA_CHALLENGE = 'mfaChallenge',\n MFA_SETUP = 'mfaSetup'\n}\n\n/**\n * Get the SHA1 hex uppercase hash of a string, using web crypto.\n */\nconst SHA1 = async (str: string): Promise<string | null> => {\n if (!window.crypto) return null;\n const msgUint8 = new TextEncoder().encode(str);\n const hashBuffer = await window.crypto.subtle.digest('SHA-1', msgUint8);\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\n return hashHex.toUpperCase();\n};\n","import { Component, inject, ChangeDetectionStrategy, signal, model } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n NavController,\n IonItem,\n IonContent,\n IonCard,\n IonCardContent,\n IonImg,\n IonCardHeader,\n IonCardTitle,\n IonCardSubtitle,\n IonLabel,\n IonIcon,\n IonRow,\n IonCol,\n IonText,\n IonButton,\n IonInput,\n IonCheckbox\n} from '@ionic/angular/standalone';\nimport { Browser } from '@capacitor/browser';\nimport { isEmpty } from 'idea-toolbox';\nimport {\n IDEAEnvironment,\n IDEAMessageService,\n IDEALoadingService,\n IDEATranslationsService,\n IDEATranslatePipe\n} from '@idea-ionic/common';\n\nimport { IDEAAuthService, LoginOutcomeActions } from './auth.service';\n\n@Component({\n selector: 'idea-sign-in',\n imports: [\n FormsModule,\n IDEATranslatePipe,\n IonButton,\n IonText,\n IonCol,\n IonRow,\n IonIcon,\n IonLabel,\n IonCardSubtitle,\n IonCardTitle,\n IonCardHeader,\n IonImg,\n IonCardContent,\n IonCard,\n IonContent,\n IonItem,\n IonInput,\n IonCheckbox\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ion-content>\n @if (newAccountRegistered()) {\n <ion-card color=\"warning\">\n <ion-card-content>{{ 'IDEA_AUTH.CONFIRM_YOUR_EMAIL_TO_LOGIN' | translate }}</ion-card-content>\n </ion-card>\n }\n <form class=\"flexBox\">\n <div>\n <ion-card class=\"authCard\">\n <ion-img\n [title]=\"'IDEA_AUTH.SERVICE_LOGO' | translate\"\n [src]=\"darkMode ? 'assets/icons/icon-auth-alt.svg' : 'assets/icons/icon-auth.svg'\"\n />\n <ion-card-header>\n @if (title) {\n <ion-card-title color=\"primary\">{{ title }}</ion-card-title>\n }\n @if (translationExists('IDEA_VARIABLES.TAGLINE')) {\n <ion-card-subtitle> {{ 'IDEA_VARIABLES.TAGLINE' | translate }} </ion-card-subtitle>\n }\n </ion-card-header>\n <ion-card-content>\n @if (errorMsg()) {\n <p testId=\"signin.error\" class=\"errorBox\">\n <b>{{ 'IDEA_AUTH.WARNING' | translate }}.</b> {{ errorMsg() }}\n </p>\n }\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"person-circle\" color=\"primary\" />\n </ion-label>\n <ion-input\n testId=\"signin.email\"\n type=\"email\"\n inputmode=\"email\"\n pattern=\"[A-Za-z0-9._%+\\\\-]{2,}@[a-zA-Z\\\\-_.]{2,}[.]{1}[a-zA-Z]{2,}\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocomplete=\"email\"\n [placeholder]=\"'IDEA_AUTH.EMAIL' | translate\"\n [title]=\"'IDEA_AUTH.EMAIL_HINT' | translate\"\n [disabled]=\"externalProviders.length && doneExternalProviderCheck\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"email\"\n (keyup.enter)=\"externalProviders.length ? checkForExternalProviderEmail() : login()\"\n />\n @if (externalProviders.length && doneExternalProviderCheck) {\n <ion-button\n slot=\"end\"\n fill=\"clear\"\n [title]=\"'IDEA_AUTH.EDIT_EMAIL' | translate\"\n (click)=\"doneExternalProviderCheck = false\"\n >\n <ion-icon icon=\"pencil\" slot=\"icon-only\" />\n </ion-button>\n }\n </ion-item>\n @if (externalProviders.length && !doneExternalProviderCheck) {\n <ion-button\n testId=\"continueButton\"\n expand=\"block\"\n [disabled]=\"!agreementsCheck\"\n [title]=\"'IDEA_AUTH.CONTINUE_HINT' | translate\"\n (click)=\"checkForExternalProviderEmail()\"\n >\n {{ 'IDEA_AUTH.CONTINUE' | translate }}\n </ion-button>\n } @else {\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"key\" color=\"primary\" />\n </ion-label>\n <ion-input\n testId=\"signin.password\"\n id=\"current-password\"\n type=\"password\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocomplete=\"current-password\"\n [clearOnEdit]=\"false\"\n [placeholder]=\"'IDEA_AUTH.PASSWORD' | translate\"\n [title]=\"'IDEA_AUTH.PASSWORD_HINT' | translate\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"password\"\n (keyup.enter)=\"login()\"\n />\n </ion-item>\n @if (\n !registrationPossible &&\n (translationExists('IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL') ||\n translationExists('IDEA_VARIABLES.PRIVACY_POLICY_URL'))\n ) {\n <ion-row class=\"agreementsAcceptanceRow\">\n <ion-col>\n <ion-checkbox\n size=\"small\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"agreementsCheck\"\n />\n {{ 'IDEA_AUTH.AGREEMENTS_CHECK_LOGIN' | translate }}:\n @if (translationExists('IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL')) {\n <a\n ion-text\n testId=\"openTermsAndConditionsButton\"\n color=\"primary\"\n target=\"_blank\"\n [title]=\"'IDEA_AUTH.TERMS_AND_CONDITIONS_HINT' | translate\"\n [href]=\"'IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL' | translate\"\n >\n {{ 'IDEA_AUTH.TERMS_AND_CONDITIONS' | translate }}\n </a>\n }\n @if (\n translationExists('IDEA_VARIABLES.PRIVACY_POLICY_URL') &&\n translationExists('IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL')\n ) {\n <ion-text> & </ion-text>\n }\n @if (translationExists('IDEA_VARIABLES.PRIVACY_POLICY_URL')) {\n <a\n ion-text\n testId=\"openPrivacyPolicyButton\"\n color=\"primary\"\n target=\"_blank\"\n [title]=\"'IDEA_AUTH.PRIVACY_POLICY_HINT' | translate\"\n [href]=\"'IDEA_VARIABLES.PRIVACY_POLICY_URL' | translate\"\n >\n {{ 'IDEA_AUTH.PRIVACY_POLICY' | translate }}\n </a>\n }\n </ion-col>\n </ion-row>\n }\n <ion-button\n testId=\"signInButton\"\n expand=\"block\"\n [disabled]=\"!agreementsCheck\"\n [title]=\"'IDEA_AUTH.SIGN_IN_HINT' | translate\"\n (click)=\"login()\"\n >\n {{ 'IDEA_AUTH.SIGN_IN' | translate }}\n </ion-button>\n @if (registrationPossible) {\n <ion-button\n testId=\"createAnAccountButton\"\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"'IDEA_AUTH.CREATE_AN_ACCOUNT_HINT' | translate\"\n (click)=\"goToRegistration()\"\n >\n {{ 'IDEA_AUTH.CREATE_AN_ACCOUNT' | translate }}\n </ion-button>\n }\n <ion-button\n testId=\"forgotPasswordButton\"\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"'IDEA_AUTH.I_FORGOT_MY_PASSWORD_HINT' | translate\"\n (click)=\"goToForgotPassword()\"\n >\n {{ 'IDEA_AUTH.I_FORGOT_MY_PASSWORD' | translate }}\n </ion-button>\n }\n @if (hasIntroPage) {\n <ion-button\n testId=\"backToIntroButton\"\n fill=\"clear\"\n expand=\"block\"\n color=\"medium\"\n class=\"smallCaseButton\"\n [title]=\"'IDEA_AUTH.BACK_TO_INTRO_HINT' | translate\"\n (click)=\"goToIntro()\"\n >\n {{ 'IDEA_AUTH.BACK_TO_INTRO' | translate }}\n </ion-button>\n }\n </ion-card-content>\n </ion-card>\n @if (website) {\n <ion-img\n class=\"ideaLogo\"\n [src]=\"darkMode ? './assets/icons/idea-alt.png' : './assets/icons/idea.png'\"\n [title]=\"'IDEA_AUTH.IDEA_TAGLINE' | translate\"\n (click)=\"openLink(website)\"\n />\n }\n </div>\n </form>\n </ion-content>\n `,\n styleUrls: ['auth.scss']\n})\nexport class IDEASignInPage {\n protected _env = inject(IDEAEnvironment);\n private _nav = inject(NavController);\n private _message = inject(IDEAMessageService);\n private _loading = inject(IDEALoadingService);\n private _translate = inject(IDEATranslationsService);\n private _auth = inject(IDEAAuthService);\n\n title: string;\n registrationPossible: boolean;\n hasIntroPage: boolean;\n website: string;\n externalProviders: { type: string; name: string; emailDomains: string[] }[];\n doneExternalProviderCheck = false;\n\n email = model<string>();\n password: string;\n agreementsCheck = true;\n newAccountRegistered = signal<boolean>(false);\n errorMsg = signal<string>(null);\n darkMode = window.matchMedia('(prefers-color-scheme: dark)').matches;\n\n constructor() {\n this.title = this._env.idea.auth.title;\n this.registrationPossible = this._env.idea.auth.registrationIsPossible;\n this.hasIntroPage = this._env.idea.auth.hasIntroPage;\n this.website = this._env.idea.auth.website;\n this.externalProviders = this._env.aws.cognito?.externalProviders || [];\n }\n ionViewDidEnter(): void {\n // manage the scenario in which we just created a new account (show a explanatory message: email must be confirmed)\n this.newAccountRegistered.set(!!this._auth.getNewAccountJustRegistered());\n if (this.newAccountRegistered()) this.email.set(this._auth.getNewAccountJustRegistered());\n }\n\n async login(): Promise<void> {\n if (!this.agreementsCheck) return;\n try {\n this.errorMsg.set(null);\n await this._loading.show();\n const loginAction = await this._auth.login(this.email(), this.password);\n if (loginAction === LoginOutcomeActions.NEW_PASSWORD) this._nav.navigateForward(['auth', 'new-password']);\n else if (loginAction === LoginOutcomeActions.MFA_CHALLENGE) this._nav.navigateForward(['auth', 'mfa-challenge']);\n else if (loginAction === LoginOutcomeActions.MFA_SETUP) this._nav.navigateForward(['auth', 'setup-mfa']);\n else window.location.assign('');\n } catch (err) {\n if ((err as any).name === 'UserNotConfirmedException')\n this.errorMsg.set(this._translate._('IDEA_AUTH.CONFIRM_YOUR_EMAIL_TO_LOGIN'));\n else if (\n (err as any).name === 'UserLambdaValidationException' &&\n (err as any).message?.includes('@IDEA_COGNITO_TRANSITION')\n )\n this.errorMsg.set(this._translate._('IDEA_AUTH.CHANGE_YOUR_PASSWORD_TO_LOGIN'));\n this._message.error('IDEA_AUTH.AUTHENTICATION_FAILED');\n } finally {\n this._loading.hide();\n }\n }\n\n checkForExternalProviderEmail(): void {\n if (isEmpty(this.email(), 'email')) return;\n const emailDomain = this.email().split('@')[1];\n this.doneExternalProviderCheck = true;\n const provider = this.externalProviders.find(p => p.emailDomains.includes(emailDomain));\n if (provider)\n this._nav.navigateForward(['auth', provider.type], { queryParams: { provider: provider.name, go: true } });\n }\n\n goToIntro(): void {\n this._nav.navigateBack(['intro']);\n }\n goToForgotPassword(): void {\n this._nav.navigateForward(['auth', 'forgot-password']);\n }\n goToRegistration(): void {\n this._nav.navigateForward(['auth', 'sign-up']);\n }\n\n translationExists(key: string): boolean {\n return !!this._translate._(key);\n }\n\n async openLink(url: string): Promise<void> {\n await Browser.open({ url });\n }\n}\n","import { Component, inject, ChangeDetectionStrategy } from '@angular/core';\nimport { IonCard, IonCardContent, IonCardHeader, IonCardTitle } from '@ionic/angular/standalone';\nimport { IDEAEnvironment, IDEATranslatePipe } from '@idea-ionic/common';\n\n@Component({\n selector: 'idea-password-policy',\n imports: [IDEATranslatePipe, IonCard, IonCardHeader, IonCardTitle, IonCardContent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ion-card class=\"passwordPolicyCard\">\n <ion-card-header>\n <ion-card-title>{{ 'IDEA_AUTH.PASSWORD_REQUIREMENTS_TITLE' | translate }}</ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <ul>\n <li>{{ 'IDEA_AUTH.PASSWORD_REQUIREMENTS.MIN_LENGTH' | translate: { n: passwordPolicy.minLength } }}</li>\n @if (passwordPolicy.requireDigits) {\n <li>\n {{ 'IDEA_AUTH.PASSWORD_REQUIREMENTS.REQUIRE_DIGITS' | translate }}\n </li>\n }\n @if (passwordPolicy.requireSymbols) {\n <li>\n {{ 'IDEA_AUTH.PASSWORD_REQUIREMENTS.REQUIRE_SYMBOLS' | translate }}\n </li>\n }\n @if (passwordPolicy.requireUppercase) {\n <li>\n {{ 'IDEA_AUTH.PASSWORD_REQUIREMENTS.REQUIRE_UPPERCASE' | translate }}\n </li>\n }\n @if (passwordPolicy.requireLowercase) {\n <li>\n {{ 'IDEA_AUTH.PASSWORD_REQUIREMENTS.REQUIRE_LOWERCASE' | translate }}\n </li>\n }\n </ul>\n </ion-card-content>\n </ion-card>\n `,\n styles: [\n `\n ion-card.passwordPolicyCard {\n box-shadow: none;\n border: none;\n padding: 6px;\n }\n ion-card.passwordPolicyCard ion-card-title {\n font-size: 1rem;\n }\n ion-card.passwordPolicyCard ul {\n margin: 0;\n }\n `\n ]\n})\nexport class IDEAPasswordPolicyComponent {\n protected _env = inject(IDEAEnvironment);\n\n passwordPolicy: any;\n\n constructor() {\n this.passwordPolicy = this._env.idea.auth.passwordPolicy;\n }\n}\n","import { Component, OnInit, inject, signal, ChangeDetectionStrategy } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n NavController,\n PopoverController,\n IonContent,\n IonCard,\n IonCardHeader,\n IonCardTitle,\n IonCardSubtitle,\n IonCardContent,\n IonItem,\n IonIcon,\n IonLabel,\n IonButton,\n IonRow,\n IonCol,\n IonText,\n IonInput,\n IonCheckbox\n} from '@ionic/angular/standalone';\nimport { isEmpty } from 'idea-toolbox';\nimport {\n IDEAEnvironment,\n IDEAMessageService,\n IDEALoadingService,\n IDEATranslationsService,\n IDEATranslatePipe\n} from '@idea-ionic/common';\n\nimport { IDEAPasswordPolicyComponent } from './passwordPolicy.component';\nimport { IDEAAuthService } from './auth.service';\n\n@Component({\n selector: 'idea-sign-up',\n imports: [\n FormsModule,\n IDEATranslatePipe,\n IonText,\n IonCol,\n IonRow,\n IonButton,\n IonLabel,\n IonIcon,\n IonItem,\n IonCardContent,\n IonCardSubtitle,\n IonCardTitle,\n IonCardHeader,\n IonCard,\n IonContent,\n IonInput,\n IonCheckbox\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ion-content>\n <form class=\"flexBox\">\n <ion-card class=\"authCard\">\n <ion-card-header>\n <ion-card-title color=\"primary\">{{ 'IDEA_AUTH.NEW_ACCOUNT' | translate }}</ion-card-title>\n <ion-card-subtitle>{{ 'IDEA_AUTH.REGISTER_A_NEW_ACCOUNT_TO_THE_SYSTEM' | translate }}</ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n @if (errorMsg()) {\n <p testId=\"signup.error\" class=\"errorBox\">\n <b> {{ 'IDEA_AUTH.ERROR' | translate }}. </b>\n {{ errorMsg() }}\n </p>\n }\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"person-circle\" color=\"primary\" />\n </ion-label>\n <ion-input\n testId=\"signup.email\"\n type=\"email\"\n inputmode=\"email\"\n pattern=\"[A-Za-z0-9._%+\\\\-]{2,}@[a-zA-Z\\\\-_.]{2,}[.]{1}[a-zA-Z]{2,}\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocomplete=\"off\"\n [placeholder]=\"'IDEA_AUTH.EMAIL' | translate\"\n [title]=\"'IDEA_AUTH.REGISTRATION_EMAIL_HINT' | translate\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"email\"\n (keyup.enter)=\"register()\"\n />\n </ion-item>\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"key\" color=\"primary\" />\n </ion-label>\n <ion-input\n testId=\"signup.password\"\n type=\"password\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocomplete=\"off\"\n [pattern]=\"_auth.getPasswordPolicyPatternForInput()\"\n [clearOnEdit]=\"false\"\n [placeholder]=\"'IDEA_AUTH.PASSWORD' | translate\"\n [title]=\"'IDEA_AUTH.CHOOSE_A_PASSWORD' | translate\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"password\"\n (keyup.enter)=\"register()\"\n />\n <ion-button\n testId=\"openPasswordPolicyButton\"\n slot=\"end\"\n fill=\"clear\"\n color=\"dark\"\n (click)=\"openPasswordPolicy($event)\"\n >\n <ion-icon icon=\"help-circle-outline\" slot=\"icon-only\" />\n </ion-button>\n </ion-item>\n @if (\n translationExists('IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL') ||\n translationExists('IDEA_VARIABLES.PRIVACY_POLICY_URL')\n ) {\n <ion-row class=\"agreementsAcceptanceRow\">\n <ion-col>\n <ion-checkbox size=\"small\" [ngModelOptions]=\"{ standalone: true }\" [(ngModel)]=\"agreementsCheck\" />\n {{ 'IDEA_AUTH.AGREEMENTS_CHECK_REGISTRATION' | translate }}:\n @if (translationExists('IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL')) {\n <a\n ion-text\n testId=\"openTermsAndConditionsButton\"\n color=\"primary\"\n target=\"_blank\"\n [title]=\"'IDEA_AUTH.TERMS_AND_CONDITIONS_HINT' | translate\"\n [href]=\"'IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL' | translate\"\n >\n {{ 'IDEA_AUTH.TERMS_AND_CONDITIONS' | translate }}\n </a>\n }\n @if (\n translationExists('IDEA_VARIABLES.PRIVACY_POLICY_URL') &&\n translationExists('IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL')\n ) {\n <ion-text> & </ion-text>\n }\n @if (translationExists('IDEA_VARIABLES.PRIVACY_POLICY_URL')) {\n <a\n ion-text\n testId=\"openPrivacyPolicyButton\"\n color=\"primary\"\n target=\"_blank\"\n [title]=\"'IDEA_AUTH.PRIVACY_POLICY_HINT' | translate\"\n [href]=\"'IDEA_VARIABLES.PRIVACY_POLICY_URL' | translate\"\n >\n {{ 'IDEA_AUTH.PRIVACY_POLICY' | translate }}\n </a>\n }\n </ion-col>\n </ion-row>\n }\n <ion-button\n testId=\"signUpButton\"\n expand=\"block\"\n [disabled]=\"!agreementsCheck\"\n [title]=\"'IDEA_AUTH.CREATE_AN_ACCOUNT_HINT' | translate\"\n (click)=\"register()\"\n >\n {{ 'IDEA_AUTH.CREATE_AN_ACCOUNT' | translate }}\n </ion-button>\n <ion-button\n testId=\"resendLinkButton\"\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"'IDEA_AUTH.HAVEN_T_RECEIVED_CONFIRMATION_LINK_HINT' | translate\"\n (click)=\"goToResendLink()\"\n >\n {{ 'IDEA_AUTH.HAVEN_T_RECEIVED_CONFIRMATION_LINK' | translate }}\n </ion-button>\n <ion-button\n testId=\"backToSignInButton\"\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"'IDEA_AUTH.BACK_TO_SIGN_IN_HINT' | translate\"\n (click)=\"goToAuth()\"\n >\n {{ 'IDEA_AUTH.BACK_TO_SIGN_IN' | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n </form>\n </ion-content>\n `,\n styleUrls: ['auth.scss']\n})\nexport class IDEASignUpPage implements OnInit {\n protected _env = inject(IDEAEnvironment);\n private _nav = inject(NavController);\n private _popover = inject(PopoverController);\n private _message = inject(IDEAMessageService);\n private _loading = inject(IDEALoadingService);\n private _translate = inject(IDEATranslationsService);\n public _auth = inject(IDEAAuthService);\n\n email: string;\n password: string;\n agreementsCheck = false;\n passwordPolicy: any;\n errorMsg = signal<string>(null);\n\n constructor() {\n this.passwordPolicy = this._env.idea.auth.passwordPolicy;\n }\n ngOnInit(): void {\n if (!this._env.idea.auth.registrationIsPossible) return this.goToAuth();\n this.agreementsCheck =\n this._translate._('IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL') ||\n this._translate._('IDEA_VARIABLES.PRIVACY_POLICY_URL')\n ? this.agreementsCheck\n : true;\n }\n\n async register(): Promise<void> {\n try {\n await this._loading.show();\n this.errorMsg.set(null);\n if (isEmpty(this.email, 'email')) this.errorMsg.set(this._translate._('IDEA_AUTH.VALID_EMAIL_OBLIGATORY'));\n else {\n const errors = this._auth.validatePasswordAgainstPolicy(this.password);\n if (errors.length === 0 && this.passwordPolicy.advancedPasswordCheck) {\n const emailParts = [...this.email?.split('@')[0].split(/\\W/g)];\n errors.push(...(await this._auth.validatePasswordAgainstDatabases(this.password, emailParts)));\n }\n if (errors.length)\n this.errorMsg.set(\n [\n this._translate._('IDEA_AUTH.PASSWORD_REQUIREMENTS_FOLLOW'),\n ...errors.map(x =>\n this._translate._('IDEA_AUTH.PASSWORD_REQUIREMENTS.'.concat(x), { n: this.passwordPolicy.minLength })\n )\n ].join(' ')\n );\n }\n if (this.errorMsg()) return this._message.error('IDEA_AUTH.REGISTRATION_FAILED');\n await this._auth.register(this.email, this.password);\n this._message.success('IDEA_AUTH.REGISTRATION_COMPLETED');\n this.goToAuth();\n } catch (err) {\n this.errorMsg.set((err as any).message);\n this._message.error('IDEA_AUTH.REGISTRATION_FAILED');\n } finally {\n this._loading.hide();\n }\n }\n\n translationExists(key: string): boolean {\n return !!this._translate._(key);\n }\n\n async openPasswordPolicy(event: Event): Promise<void> {\n const cssClass = 'passwordPolicyPopover';\n const popover = await this._popover.create({ component: IDEAPasswordPolicyComponent, event, cssClass });\n await popover.present();\n }\n\n goToResendLink(): void {\n this._nav.navigateForward(['auth', 'resend-link']);\n }\n goToAuth(): void {\n this._nav.navigateBack(['auth']);\n }\n}\n","import { Component, OnInit, inject, ChangeDetectionStrategy, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n NavController,\n PopoverController,\n IonContent,\n IonCard,\n IonCardHeader,\n IonCardTitle,\n IonCardSubtitle,\n IonCardContent,\n IonItem,\n IonLabel,\n IonIcon,\n IonButton,\n IonInput\n} from '@ionic/angular/standalone';\nimport {\n IDEAEnvironment,\n IDEAMessageService,\n IDEALoadingService,\n IDEATranslationsService,\n IDEATranslatePipe\n} from '@idea-ionic/common';\n\nimport { IDEAPasswordPolicyComponent } from './passwordPolicy.component';\nimport { IDEAAuthService } from './auth.service';\n\n@Component({\n selector: 'idea-new-password',\n imports: [\n FormsModule,\n IDEATranslatePipe,\n IonButton,\n IonIcon,\n IonLabel,\n IonItem,\n IonCardContent,\n IonCardSubtitle,\n IonCardTitle,\n IonCardHeader,\n IonCard,\n IonContent,\n IonInput\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ion-content>\n <form class=\"flexBox\">\n <ion-card class=\"authCard\">\n <ion-card-header>\n <ion-card-title color=\"primary\">{{ 'IDEA_AUTH.CHOOSE_A_PASSWORD' | translate }}</ion-card-title>\n <ion-card-subtitle>{{ 'IDEA_AUTH.YOU_NEED_TO_CHOOSE_A_NEW_PASSWORD' | translate }}</ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n @if (errorMsg()) {\n <p testId=\"newpassword.error\" class=\"errorBox\">\n <b> {{ 'IDEA_AUTH.ERROR' | translate }}. </b>\n {{ errorMsg() }}\n </p>\n }\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"key\" color=\"primary\" />\n </ion-label>\n <ion-input\n testId=\"newpassword.password\"\n type=\"password\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocomplete=\"new-password\"\n [pattern]=\"_auth.getPasswordPolicyPatternForInput()\"\n [clearOnEdit]=\"false\"\n [placeholder]=\"'IDEA_AUTH.PASSWORD' | translate\"\n [title]=\"'IDEA_AUTH.CHOOSE_A_PASSWORD' | translate\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"newPassword\"\n (keyup.enter)=\"confirmNewPassword()\"\n />\n <ion-button\n testId=\"openPasswordPolicyButton\"\n slot=\"end\"\n fill=\"clear\"\n color=\"dark\"\n (click)=\"openPasswordPolicy($event)\"\n >\n <ion-icon icon=\"help-circle-outline\" slot=\"icon-only\" />\n </ion-button>\n </ion-item>\n <ion-button\n testId=\"confirmNewPaswordButton\"\n expand=\"block\"\n [title]=\"'IDEA_AUTH.CONFIRM_NEW_PASSWORD_HINT' | translate\"\n (click)=\"confirmNewPassword()\"\n >\n {{ 'IDEA_AUTH.CONFIRM_NEW_PASSWORD' | translate }}\n </ion-button>\n <ion-button\n testId=\"backToSignInButton\"\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"'IDEA_AUTH.BACK_TO_SIGN_IN_HINT' | translate\"\n (click)=\"goToAuth()\"\n >\n {{ 'IDEA_AUTH.BACK_TO_SIGN_IN' | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n </form>\n </ion-content>\n `,\n styleUrls: ['auth.scss']\n})\nexport class IDEANewPasswordPage implements OnInit {\n protected _env = inject(IDEAEnvironment);\n private _nav = inject(NavController);\n private _popover = inject(PopoverController);\n private _message = inject(IDEAMessageService);\n private _loading = inject(IDEALoadingService);\n private _translate = inject(IDEATranslationsService);\n _auth = inject(IDEAAuthService);\n\n newPassword: string;\n passwordPolicy: any;\n errorMsg = signal<string>(null);\n\n constructor() {\n this.passwordPolicy = this._env.idea.auth.passwordPolicy;\n }\n ngOnInit(): void {\n if (!this._auth.challengeUsername) this.goToAuth();\n }\n\n async confirmNewPassword(): Promise<void> {\n try {\n await this._loading.show();\n this.errorMsg.set(null);\n const errors = this._auth.validatePasswordAgainstPolicy(this.newPassword);\n if (errors.length === 0 && this.passwordPolicy.advancedPasswordCheck)\n errors.push(...(await this._auth.validatePasswordAgainstDatabases(this.newPassword)));\n if (errors.length)\n this.errorMsg.set(\n [\n this._translate._('IDEA_AUTH.PASSWORD_REQUIREMENTS_FOLLOW'),\n ...errors.map(x =>\n this._translate._('IDEA_AUTH.PASSWORD_REQUIREMENTS.'.concat(x), { n: this.passwordPolicy.minLength })\n )\n ].join(' ')\n );\n if (this.errorMsg()) return this._message.error('IDEA_AUTH.PASSWORD_REQUIREMENTS_FOLLOW');\n await this._auth.confirmNewPassword(this.newPassword);\n window.location.assign('');\n } catch (error) {\n this.errorMsg.set((error as any).message);\n this._message.error('IDEA_AUTH.PASSWORD_REQUIREMENTS_FOLLOW');\n } finally {\n this._loading.hide();\n }\n }\n\n async openPasswordPolicy(event: Event): Promise<void> {\n const cssClass = 'passwordPolicyPopover';\n const popover = await this._popover.create({ component: IDEAPasswordPolicyComponent, event, cssClass });\n await popover.present();\n }\n\n goToAuth(): void {\n this._nav.navigateBack(['auth']);\n }\n}\n","import { Component, inject, signal, ChangeDetectionStrategy } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n NavController,\n IonContent,\n IonIcon,\n IonCard,\n IonCardHeader,\n IonCardTitle,\n IonCardContent,\n IonCardSubtitle,\n IonInput,\n IonItem,\n IonLabel,\n IonButton\n} from '@ionic/angular/standalone';\nimport { IDEAMessageService, IDEALoadingService, IDEATranslationsService, IDEATranslatePipe } from '@idea-ionic/common';\n\nimport { IDEAAuthService } from './auth.service';\n\n@Component({\n selector: 'idea-resend-link',\n imports: [\n FormsModule,\n IDEATranslatePipe,\n IonButton,\n IonLabel,\n IonItem,\n IonInput,\n IonCardSubtitle,\n IonCardContent,\n IonCardTitle,\n IonCardHeader,\n IonCard,\n IonIcon,\n IonContent,\n IonInput\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ion-content>\n <form class=\"flexBox\">\n <ion-card class=\"authCard\">\n <ion-card-header>\n <ion-card-title color=\"primary\">{{ 'IDEA_AUTH.CONFIRM_ACCOUNT' | translate }}</ion-card-title>\n <ion-card-subtitle>{{ 'IDEA_AUTH.RESEND_CONFIRMATION_LINK_HINT' | translate }}</ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n @if (errorMsg()) {\n <p testId=\"resendlink.error\" class=\"errorBox\">\n <b> {{ 'IDEA_AUTH.ERROR' | translate }}. </b>\n {{ errorMsg() }}\n </p>\n }\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"person-circle\" color=\"primary\" />\n </ion-label>\n <ion-input\n testId=\"resendlink.email\"\n type=\"email\"\n inputmode=\"email\"\n pattern=\"[A-Za-z0-9._%+\\\\-]{2,}@[a-zA-Z\\\\-_.]{2,}[.]{1}[a-zA-Z]{2,}\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocomplete=\"email\"\n [placeholder]=\"'IDEA_AUTH.EMAIL' | translate\"\n [title]=\"'IDEA_AUTH.EMAIL_HINT' | translate\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"email\"\n (keyup.enter)=\"resendConfirmationLink()\"\n />\n </ion-item>\n <ion-button\n testId=\"resendLinkButton\"\n expand=\"block\"\n [title]=\"'IDEA_AUTH.RESEND_LINK_HINT' | translate\"\n (click)=\"resendConfirmationLink()\"\n >\n {{ 'IDEA_AUTH.RESEND_LINK' | translate }}\n </ion-button>\n <ion-button\n testId=\"backToSignInButton\"\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"'IDEA_AUTH.BACK_TO_SIGN_IN_HINT' | translate\"\n (click)=\"goToAuth()\"\n >\n {{ 'IDEA_AUTH.BACK_TO_SIGN_IN' | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n </form>\n </ion-content>\n `,\n styleUrls: ['auth.scss']\n})\nexport class IDEAResendLinkPage {\n private _nav = inject(NavController);\n private _message = inject(IDEAMessageService);\n private _loading = inject(IDEALoadingService);\n private _auth = inject(IDEAAuthService);\n private _translate = inject(IDEATranslationsService);\n\n email: string;\n errorMsg = signal<string>(null);\n\n async resendConfirmationLink(): Promise<void> {\n this.errorMsg.set(null);\n if (!this.email) {\n this.errorMsg.set(this._translate._('IDEA_AUTH.VALID_EMAIL_OBLIGATORY'));\n this._message.error('IDEA_AUTH.SENDING_FAILED');\n return;\n }\n try {\n await this._loading.show();\n await this._auth.resendConfirmationCode(this.email);\n this._message.success('IDEA_AUTH.CONFIRMATION_LINK_SENT');\n this.goToAuth();\n } catch (error) {\n this.errorMsg.set(this._translate._('IDEA_AUTH.IS_THE_EMAIL_CORRECT'));\n this._message.error('IDEA_AUTH.SENDING_FAILED');\n } finally {\n this._loading.hide();\n }\n }\n\n goToAuth(): void {\n this._nav.navigateBack(['auth']);\n }\n}\n","import { Component, inject, ChangeDetectionStrategy } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n NavController,\n IonContent,\n IonCard,\n IonCardHeader,\n IonCardTitle,\n IonCardSubtitle,\n IonCardContent,\n IonItem,\n IonLabel,\n IonIcon,\n IonButton,\n IonInput\n} from '@ionic/angular/standalone';\nimport { IDEAMessageService, IDEALoadingService, IDEATranslatePipe } from '@idea-ionic/common';\n\nimport { IDEAAuthService } from './auth.service';\n\n@Component({\n selector: 'idea-forgot-password',\n imports: [\n FormsModule,\n IDEATranslatePipe,\n IonButton,\n IonIcon,\n IonLabel,\n IonItem,\n IonCardContent,\n IonCardSubtitle,\n IonCardTitle,\n IonCardHeader,\n IonCard,\n IonContent,\n IonInput\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ion-content>\n <form class=\"flexBox\">\n <ion-card class=\"authCard\">\n <ion-card-header>\n <ion-card-title color=\"primary\">{{ 'IDEA_AUTH.PASSWORD_RESET' | translate }}</ion-card-title>\n <ion-card-subtitle>{{ 'IDEA_AUTH.PASSWORD_RESET_HINT' | translate }}</ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"person-circle\" color=\"primary\" />\n </ion-label>\n <ion-input\n testId=\"forgotpassword.email\"\n type=\"email\"\n inputmode=\"email\"\n pattern=\"[A-Za-z0-9._%+\\\\-]{2,}@[a-zA-Z\\\\-_.]{2,}[.]{1}[a-zA-Z]{2,}\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocomplete=\"email\"\n [placeholder]=\"'IDEA_AUTH.EMAIL' | translate\"\n [title]=\"'IDEA_AUTH.EMAIL_HINT' | translate\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"email\"\n (keyup.enter)=\"forgotPassword()\"\n />\n </ion-item>\n <ion-button\n testId=\"resetPasswordButton\"\n expand=\"block\"\n [title]=\"'IDEA_AUTH.RESET_MY_PASSWORD_HINT' | translate\"\n (click)=\"forgotPassword()\"\n >\n {{ 'IDEA_AUTH.RESET_MY_PASSWORD' | translate }}\n </ion-button>\n <ion-button\n testId=\"insertResetCodeButton\"\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"'IDEA_AUTH.ALREADY_HAVE_A_RESET_CODE_HINT' | translate\"\n (click)=\"goToConfirmPassword()\"\n >\n {{ 'IDEA_AUTH.ALREADY_HAVE_A_RESET_CODE' | translate }}\n </ion-button>\n <ion-button\n testId=\"backToSignInButton\"\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"'IDEA_AUTH.BACK_TO_SIGN_IN_HINT' | translate\"\n (click)=\"goToAuth()\"\n >\n {{ 'IDEA_AUTH.BACK_TO_SIGN_IN' | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n </form>\n </ion-content>\n `,\n styleUrls: ['auth.scss']\n})\nexport class IDEAForgotPasswordPage {\n private _nav = inject(NavController);\n private _message = inject(IDEAMessageService);\n private _loading = inject(IDEALoadingService);\n private _auth = inject(IDEAAuthService);\n\n email: string;\n\n async forgotPassword(): Promise<void> {\n try {\n await this._loading.show();\n await this._auth.forgotPassword(this.email);\n this._message.success('IDEA_AUTH.PASSWORD_RESET_CODE_SENT');\n this.goToConfirmPassword();\n } catch (error) {\n this._message.error('IDEA_AUTH.USER_NOT_FOUND');\n } finally {\n this._loading.hide();\n }\n }\n\n goToConfirmPassword(): void {\n this._nav.navigateForward(['auth', 'confirm-password'], { queryParams: { email: this.email || null } });\n }\n goToAuth(): void {\n this._nav.navigateBack(['auth']);\n }\n}\n","import { Component, OnInit, inject, signal, ChangeDetectionStrategy } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n NavController,\n PopoverController,\n IonContent,\n IonCardHeader,\n IonCard,\n IonCardTitle,\n IonCardContent,\n IonItem,\n IonLabel,\n IonIcon,\n IonButton,\n IonInput\n} from '@ionic/angular/standalone';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n IDEAEnvironment,\n IDEAMessageService,\n IDEALoadingService,\n IDEATranslationsService,\n IDEATranslatePipe\n} from '@idea-ionic/common';\n\nimport { IDEAPasswordPolicyComponent } from './passwordPolicy.component';\nimport { IDEAAuthService } from './auth.service';\n\n@Component({\n selector: 'idea-confirm-password',\n imports: [\n FormsModule,\n IDEATranslatePipe,\n IonButton,\n IonIcon,\n IonLabel,\n IonItem,\n IonCardContent,\n IonCardTitle,\n IonCard,\n IonCardHeader,\n IonContent,\n IonInput\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ion-content>\n <form class=\"flexBox\">\n <ion-card class=\"authCard\">\n <ion-card-header>\n <ion-card-title color=\"primary\">{{ 'IDEA_AUTH.CHANGE_THE_PASSWORD' | translate }}</ion-card-title>\n </ion-card-header>\n <ion-card-content>\n @if (errorMsg()) {\n <p testId=\"confirmpassword.error\" class=\"errorBox\">\n <b> {{ 'IDEA_AUTH.ERROR' | translate }}. </b>\n {{ errorMsg() }}\n </p>\n }\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"person-circle\" color=\"primary\" />\n </ion-label>\n <ion-input\n testId=\"confirmpassword.email\"\n type=\"email\"\n inputmode=\"email\"\n pattern=\"[A-Za-z0-9._%+\\\\-]{2,}@[a-zA-Z\\\\-_.]{2,}[.]{1}[a-zA-Z]{2,}\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocomplete=\"email\"\n [placeholder]=\"'IDEA_AUTH.EMAIL' | translate\"\n [title]=\"'IDEA_AUTH.EMAIL_HINT' | translate\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"email\"\n (keyup.enter)=\"confirmPassword()\"\n />\n </ion-item>\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"disc\" color=\"primary\" />\n </ion-label>\n <ion-input\n testId=\"confirmpassword.code\"\n type=\"text\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocomplete=\"off\"\n [placeholder]=\"'IDEA_AUTH.RESET_CODE' | translate\"\n [title]=\"'IDEA_AUTH.RESET_CODE_HINT' | translate\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"code\"\n (keyup.enter)=\"confirmPassword()\"\n />\n </ion-item>\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"key\" color=\"primary\" />\n </ion-label>\n <ion-input\n testId=\"confirmpassword.password\"\n type=\"password\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocomplete=\"new-password\"\n [pattern]=\"_auth.getPasswordPolicyPatternForInput()\"\n [clearOnEdit]=\"false\"\n [placeholder]=\"'IDEA_AUTH.NEW_PASSWORD' | translate\"\n [title]=\"'IDEA_AUTH.CHOOSE_A_PASSWORD' | translate\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"newPassword\"\n (keyup.enter)=\"confirmPassword()\"\n />\n <ion-button\n testId=\"openPasswordPolicyButton\"\n slot=\"end\"\n fill=\"clear\"\n color=\"dark\"\n (click)=\"openPasswordPolicy($event)\"\n >\n <ion-icon icon=\"help-circle-outline\" slot=\"icon-only\" />\n </ion-button>\n </ion-item>\n <ion-button\n testId=\"changePasswordButton\"\n expand=\"block\"\n [title]=\"'IDEA_AUTH.CHANGE_MY_PASSWORD_HINT' | translate\"\n (click)=\"confirmPassword()\"\n >\n {{ 'IDEA_AUTH.CHANGE_MY_PASSWORD' | translate }}\n </ion-button>\n <ion-button\n testId=\"haventReceivedResetCodeButton\"\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"'IDEA_AUTH.HAVEN_T_RECEIVED_A_RESET_CODE_HINT' | translate\"\n (click)=\"goToForgotPassword()\"\n >\n {{ 'IDEA_AUTH.HAVEN_T_RECEIVED_A_RESET_CODE' | translate }}\n </ion-button>\n <ion-button\n testId=\"backToSignInButton\"\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"'IDEA_AUTH.BACK_TO_SIGN_IN_HINT' | translate\"\n (click)=\"goToAuth()\"\n >\n {{ 'IDEA_AUTH.BACK_TO_SIGN_IN' | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n </form>\n </ion-content>\n `,\n styleUrls: ['auth.scss']\n})\nexport class IDEAConfirmPasswordPage implements OnInit {\n protected _env = inject(IDEAEnvironment);\n private _nav = inject(NavController);\n private _route = inject(ActivatedRoute);\n private _popover = inject(PopoverController);\n private _message = inject(IDEAMessageService);\n private _loading = inject(IDEALoadingService);\n private _translate = inject(IDEATranslationsService);\n _auth = inject(IDEAAuthService);\n\n email: string;\n newPassword: string;\n code: string;\n passwordPolicy: any;\n errorMsg = signal<string>(null);\n\n constructor() {\n this.passwordPolicy = this._env.idea.auth.passwordPolicy;\n }\n ngOnInit(): void {\n this.email = this._route.snapshot.queryParamMap.get('email') || null;\n if (!this.email && this._route.snapshot.queryParams.user)\n this.email = decodeURIComponent(this._route.snapshot.queryParams.user);\n this.code = this._route.snapshot.queryParams.code;\n }\n\n async confirmPassword(): Promise<void> {\n try {\n await this._loading.show();\n this.errorMsg.set(null);\n const errors = this._auth.validatePasswordAgainstPolicy(this.newPassword);\n if (errors.length === 0 && this.passwordPolicy.advancedPasswordCheck) {\n const emailParts = [...this.email?.split('@')[0].split(/\\W/g)];\n errors.push(...(await this._auth.validatePasswordAgainstDatabases(this.newPassword, emailParts)));\n }\n if (errors.length)\n this.errorMsg.set(\n [\n this._translate._('IDEA_AUTH.PASSWORD_REQUIREMENTS_FOLLOW'),\n ...errors.map(x =>\n this._translate._('IDEA_AUTH.PASSWORD_REQUIREMENTS.'.concat(x), { n: this.passwordPolicy.minLength })\n )\n ].join(' ')\n );\n if (this.errorMsg()) return this._message.error('IDEA_AUTH.PASSWORD_REQUIREMENTS_FOLLOW');\n await this._auth.confirmPassword(this.email, this.code, this.newPassword);\n this._message.success('IDEA_AUTH.PASSWORD_CHANGED');\n this.goToAuth();\n } catch (error) {\n this.errorMsg.set((error as any).message);\n this._message.error('IDEA_AUTH.PASSWORD_REQUIREMENTS_FOLLOW');\n } finally {\n this._loading.hide();\n }\n }\n\n async openPasswordPolicy(event: Event): Promise<void> {\n const cssClass = 'passwordPolicyPopover';\n const popover = await this._popover.create({ component: IDEAPasswordPolicyComponent, event, cssClass });\n await popover.present();\n }\n\n goToForgotPassword(): void {\n this._nav.navigateBack(['auth', 'forgot-password']);\n }\n goToAuth(): void {\n this._nav.navigateBack(['auth']);\n }\n}\n","import { Component, OnInit, inject, signal, ChangeDetectionStrategy } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n NavController,\n IonContent,\n IonCard,\n IonCardHeader,\n IonCardTitle,\n IonCardSubtitle,\n IonItem,\n IonCardContent,\n IonLabel,\n IonIcon,\n IonButton,\n IonInput\n} from '@ionic/angular/standalone';\nimport { IDEAMessageService, IDEALoadingService, IDEATranslationsService, IDEATranslatePipe } from '@idea-ionic/common';\n\nimport { IDEAAuthService } from './auth.service';\n\n@Component({\n selector: 'idea-mfa-challenge',\n imports: [\n FormsModule,\n IDEATranslatePipe,\n IonButton,\n IonIcon,\n IonLabel,\n IonCardContent,\n IonItem,\n IonCardSubtitle,\n IonCardTitle,\n IonCardHeader,\n IonCard,\n IonContent,\n IonInput\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ion-content>\n <form class=\"flexBox\">\n <ion-card class=\"authCard\">\n <ion-card-header>\n <ion-card-title color=\"primary\">{{ 'IDEA_AUTH.ENTER_OTP_CODE' | translate }}</ion-card-title>\n <ion-card-subtitle>{{ 'IDEA_AUTH.ENTER_OTP_CODE_I' | translate }}</ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n @if (errorMsg()) {\n <p testId=\"mfachallenge.error\" class=\"errorBox\">\n <b>{{ 'IDEA_AUTH.ERROR' | translate }}.</b>\n {{ errorMsg() }}\n </p>\n }\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"key\" color=\"primary\" />\n </ion-label>\n <ion-input\n testId=\"mfachallenge.otpcode\"\n inputmode=\"numeric\"\n [placeholder]=\"'IDEA_AUTH.OTP_CODE' | translate\"\n [title]=\"'IDEA_AUTH.ENTER_OTP_CODE' | translate\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"otpCode\"\n (keyup.enter)=\"completeMFAChallenge()\"\n />\n </ion-item>\n <ion-button\n testId=\"confirmOTPCodeButton\"\n expand=\"block\"\n [title]=\"'IDEA_AUTH.CONFIRM_OTP_CODE_HINT' | translate\"\n (click)=\"completeMFAChallenge()\"\n >\n {{ 'IDEA_AUTH.CONFIRM_OTP_CODE' | translate }}\n </ion-button>\n <ion-button\n testId=\"backToSignInButton\"\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"'IDEA_AUTH.BACK_TO_SIGN_IN_HINT' | translate\"\n (click)=\"goToAuth()\"\n >\n {{ 'IDEA_AUTH.BACK_TO_SIGN_IN' | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n </form>\n </ion-content>\n `,\n styleUrls: ['auth.scss']\n})\nexport class IDEAMFAChallengePage implements OnInit {\n private _nav = inject(NavController);\n private _message = inject(IDEAMessageService);\n private _loading = inject(IDEALoadingService);\n private _auth = inject(IDEAAuthService);\n private _translate = inject(IDEATranslationsService);\n\n otpCode: string;\n errorMsg = signal<string>(null);\n\n ngOnInit(): void {\n if (!this._auth.challengeUsername) this.goToAuth();\n }\n\n async completeMFAChallenge(): Promise<void> {\n try {\n this.errorMsg.set(null);\n await this._loading.show();\n await this._auth.completeMFAChallenge(this.otpCode);\n window.location.assign('');\n } catch (error) {\n this.errorMsg.set(this._translate._('IDEA_AUTH.INVALID_OTP_CODE'));\n this._message.error(this.errorMsg(), { dontTranslate: true });\n } finally {\n this._loading.hide();\n }\n }\n\n goToAuth(): void {\n this._nav.navigateBack(['auth']);\n }\n}\n","import { Component, OnInit, inject, signal, ChangeDetectionStrategy } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n ModalController,\n IonHeader,\n IonToolbar,\n IonButtons,\n IonButton,\n IonIcon,\n IonTitle,\n IonContent,\n IonList,\n IonListHeader,\n IonLabel,\n IonCard,\n IonCardContent,\n IonItem,\n IonInput\n} from '@ionic/angular/standalone';\nimport { toCanvas } from 'qrcode';\nimport { IDEALoadingService, IDEAMessageService, IDEATranslatePipe } from '@idea-ionic/common';\n\nimport { IDEAAuthService } from '../auth.service';\n\n@Component({\n selector: 'idea-setup-mfa-modal',\n imports: [\n FormsModule,\n IDEATranslatePipe,\n IonItem,\n IonCardContent,\n IonCard,\n IonLabel,\n IonListHeader,\n IonList,\n IonContent,\n IonTitle,\n IonIcon,\n IonButton,\n IonButtons,\n IonToolbar,\n IonHeader,\n IonInput\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button [title]=\"'COMMON.CLOSE' | translate\" (click)=\"close()\">\n <ion-icon name=\"close-circle-outline\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n <ion-title>{{ (isMFAEnabled() ? 'IDEA_AUTH.DISABLE_MFA' : 'IDEA_AUTH.SETUP_MFA') | translate }}</ion-title>\n </ion-toolbar>\n </ion-header>\n <ion-content class=\"ion-padding\">\n <ion-list class=\"aList\">\n <ion-list-header>\n <ion-label class=\"ion-text-center\">\n <h2>{{ (isMFAEnabled() ? 'IDEA_AUTH.DISABLE_MFA_I' : 'IDEA_AUTH.SETUP_MFA_I') | translate }}</h2>\n <p>{{ (isMFAEnabled() ? 'IDEA_AUTH.DISABLE_MFA_II' : 'IDEA_AUTH.SETUP_MFA_II') | translate }}</p>\n </ion-label>\n </ion-list-header>\n <ion-card color=\"white\">\n <ion-card-content>\n @if (!isMFAEnabled()) {\n <div id=\"qrCodeContainer\"></div>\n }\n <ion-item color=\"light\">\n <ion-input\n type=\"text\"\n inputmode=\"numeric\"\n labelPlacement=\"floating\"\n [label]=\"'IDEA_AUTH.OTP_CODE' | translate\"\n [(ngModel)]=\"otpCode\"\n />\n </ion-item>\n <ion-button expand=\"block\" class=\"ion-margin-top\" [disabled]=\"!otpCode\" (click)=\"setMFA(!isMFAEnabled())\">\n {{ (isMFAEnabled() ? 'IDEA_AUTH.DISABLE_MFA' : 'IDEA_AUTH.ENABLE_MFA') | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n </ion-list>\n </ion-content>\n `,\n styles: [\n `\n ion-list.aList {\n padding-top: 0;\n ion-card {\n margin: 10px auto;\n max-width: 300px;\n }\n #qrCodeContainer {\n width: 180px;\n margin: 10px auto;\n }\n }\n `\n ]\n})\nexport class IDEASetupMFAModalComponent implements OnInit {\n private _modal = inject(ModalController);\n private _loading = inject(IDEALoadingService);\n private _message = inject(IDEAMessageService);\n private _auth = inject(IDEAAuthService);\n\n otpCode: string;\n isMFAEnabled = signal<boolean>(undefined);\n\n async ngOnInit(): Promise<void> {\n try {\n await this._loading.show();\n this.isMFAEnabled.set(await this._auth.checkIfUserHasMFAEnabled(true));\n if (!this.isMFAEnabled()) {\n const url = await this._auth.getURLForEnablingMFA();\n await this.generateQRCodeCanvasByURL(url);\n }\n } catch (error) {\n this._message.error('COMMON.OPERATION_FAILED');\n } finally {\n this._loading.hide();\n }\n }\n private generateQRCodeCanvasByURL(url: string): Promise<void> {\n return new Promise((resolve, reject): void => {\n const container = document.getElementById('qrCodeContainer');\n container.innerHTML = '';\n toCanvas(url, { errorCorrectionLevel: 'L' }, (err: Error, canvas: HTMLCanvasElement): void => {\n if (err) return reject(err);\n canvas.style.width = '100%';\n canvas.style.height = '100%';\n canvas.style.borderRadius = '4px';\n container.appendChild(canvas);\n resolve();\n });\n });\n }\n\n async setMFA(enable: boolean): Promise<void> {\n if (!this.otpCode) return;\n try {\n await this._loading.show();\n if (enable) await this._auth.enableMFA(this.otpCode);\n else await this._auth.disableMFA(this.otpCode);\n this.isMFAEnabled.set(enable);\n this._message.success('COMMON.OPERATION_COMPLETED');\n this._modal.dismiss({ enabled: enable });\n } catch (error) {\n this._message.error('COMMON.OPERATION_FAILED');\n } finally {\n this._loading.hide();\n }\n }\n\n close(): void {\n this._modal.dismiss();\n }\n}\n","import { Component, OnInit, inject, ChangeDetectionStrategy, output, input, signal } from '@angular/core';\nimport { ModalController, IonButton } from '@ionic/angular/standalone';\nimport { IDEATranslatePipe } from '@idea-ionic/common';\n\nimport { IDEASetupMFAModalComponent } from './setupMFAModal.component';\nimport { IDEAAuthService } from '../auth.service';\n\n@Component({\n selector: 'idea-setup-mfa-button',\n imports: [IDEATranslatePipe, IonButton],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (isMFAEnabled() !== undefined) {\n <ion-button [color]=\"color()\" [fill]=\"fill()\" (click)=\"openMFAModal()\">\n {{ (isMFAEnabled() ? 'IDEA_AUTH.DISABLE_MFA' : 'IDEA_AUTH.SETUP_MFA') | translate }}\n </ion-button>\n }\n `\n})\nexport class IDEASetupMFAButtonComponent implements OnInit {\n private _modal = inject(ModalController);\n private _auth = inject(IDEAAuthService);\n\n /**\n * The color of the button.\n */\n readonly color = input<string>();\n /**\n * The fill option for the button.\n */\n readonly fill = input<string>();\n /**\n * Trigger then the MFA setup changes.\n */\n readonly change = output<boolean>();\n\n isMFAEnabled = signal<boolean>(undefined);\n\n async ngOnInit(): Promise<void> {\n this.isMFAEnabled.set(await this._auth.checkIfUserHasMFAEnabled(true));\n }\n\n async openMFAModal(): Promise<void> {\n const modal = await this._modal.create({ component: IDEASetupMFAModalComponent, backdropDismiss: false });\n modal.onDidDismiss().then(({ data }): void => {\n if (data) {\n this.isMFAEnabled.set(data.enabled);\n this.change.emit(data.enabled);\n }\n });\n await modal.present();\n }\n}\n","import { Component, inject, ChangeDetectionStrategy } from '@angular/core';\nimport {\n NavController,\n IonContent,\n IonCard,\n IonCardHeader,\n IonCardTitle,\n IonCardSubtitle,\n IonCardContent,\n IonButton\n} from '@ionic/angular/standalone';\nimport { IDEATranslatePipe } from '@idea-ionic/common';\n\nimport { IDEASetupMFAButtonComponent } from './setupMFA/setupMFAButton.component';\n\n@Component({\n selector: 'idea-mfa-setup',\n imports: [\n IDEATranslatePipe,\n IDEASetupMFAButtonComponent,\n IonButton,\n IonCardContent,\n IonCardSubtitle,\n IonCardTitle,\n IonCardHeader,\n IonCard,\n IonContent\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ion-content>\n <form class=\"flexBox\">\n <ion-card class=\"authCard\">\n <ion-card-header>\n <ion-card-title color=\"primary\">{{ 'IDEA_AUTH.SETUP_MFA' | translate }}</ion-card-title>\n <ion-card-subtitle>{{ 'IDEA_AUTH.MFA_IS_MANDATORY' | translate }}</ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <idea-setup-mfa-button testId=\"setupMfaButton\" (change)=\"reloadApp()\" />\n <ion-button\n testId=\"backToSignInButton\"\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"'IDEA_AUTH.BACK_TO_SIGN_IN_HINT' | translate\"\n (click)=\"goToAuth()\"\n >\n {{ 'IDEA_AUTH.BACK_TO_SIGN_IN' | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n </form>\n </ion-content>\n `,\n styleUrls: ['auth.scss']\n})\nexport class IDEASetupMFAPage {\n private _nav = inject(NavController);\n\n reloadApp(): void {\n window.location.assign('');\n }\n goToAuth(): void {\n this._nav.navigateBack(['auth']);\n }\n}\n","import { Component, inject, signal, ChangeDetectionStrategy } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport {\n IonButton,\n IonCard,\n IonCardContent,\n IonCardHeader,\n IonCardTitle,\n IonContent,\n IonImg\n} from '@ionic/angular/standalone';\nimport { IDEAEnvironment, IDEATranslatePipe } from '@idea-ionic/common';\n\n@Component({\n selector: 'okta',\n imports: [IDEATranslatePipe, IonContent, IonCard, IonImg, IonCardHeader, IonCardTitle, IonCardContent, IonButton],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (!code() && !go()) {\n <ion-content>\n <div class=\"flexBox\">\n <ion-card class=\"authCard\">\n <ion-img\n [title]=\"'IDEA_AUTH.SERVICE_LOGO' | translate\"\n [src]=\"darkMode ? 'assets/icons/icon-auth-alt.svg' : 'assets/icons/icon-auth.svg'\"\n />\n @if (title) {\n <ion-card-header>\n <ion-card-title color=\"primary\">{{ title }}</ion-card-title>\n </ion-card-header>\n }\n <ion-card-content>\n @if (identityProvider()) {\n <ion-button expand=\"block\" [title]=\"'IDEA_AUTH.SIGN_IN_HINT' | translate\" (click)=\"startLogin()\">\n {{ 'IDEA_AUTH.SIGN_IN' | translate }}\n </ion-button>\n } @else {\n <p testId=\"signin.error\" class=\"errorBox\">\n <b>{{ 'IDEA_AUTH.UNKNOWN_PROVIDER' | translate }}.</b>\n </p>\n }\n </ion-card-content>\n </ion-card>\n </div>\n </ion-content>\n }\n `,\n styleUrls: ['auth.scss']\n})\nexport class IDEAOktaPage {\n private _route = inject(ActivatedRoute);\n private _router = inject(Router);\n private _env = inject(IDEAEnvironment);\n\n identityProvider = signal<string>(null);\n code = signal<string>(null);\n go = signal<boolean>(false);\n\n domain = this._env.aws.cognito.domain;\n clientId = this._env.aws.cognito.userPoolClientId;\n redirectURI = `${window.location.origin}${window.location.pathname}`; // Cognito client must include this callback\n scope = 'email openid profile aws.cognito.signin.user.admin'; // Cognito client config must match\n\n title = this._env.idea.auth.title;\n darkMode = window.matchMedia('(prefers-color-scheme: dark)').matches;\n\n ionViewWillEnter(): void {\n this.identityProvider.set(this._route.snapshot.queryParamMap.get('provider'));\n this.code.set(this._route.snapshot.queryParamMap.get('code'));\n this.go.set(!!this._route.snapshot.queryParamMap.get('go'));\n this._router.navigate([], { queryParams: {}, replaceUrl: true });\n if (this.code()) this.endLogin();\n else if (this.identityProvider() && this.go()) this.startLogin();\n }\n\n startLogin(): void {\n const url = `https://${this.domain}/oauth2/authorize`;\n const params = new URLSearchParams();\n params.append('identity_provider', this.identityProvider());\n params.append('redirect_uri', this.redirectURI);\n params.append('response_type', 'code');\n params.append('client_id', this.clientId);\n params.append('scope', this.scope);\n\n window.location.assign(`${url}?${params.toString()}`);\n }\n\n private async endLogin(): Promise<void> {\n const url = `https://${this.domain}/oauth2/token`;\n const params = new URLSearchParams();\n params.append('code', this.code());\n params.append('grant_type', 'authorization_code');\n params.append('redirect_uri', this.redirectURI);\n params.append('client_id', this.clientId);\n const headers = { 'Content-Type': 'application/x-www-form-urlencoded' };\n\n const response = await fetch(url, { method: 'POST', headers, body: params.toString() });\n if (!response.ok) throw new Error(`HTTP error! Status: ${response.status}`);\n const { id_token, access_token, refresh_token } = await response.json();\n\n storeCognitoSession(id_token, access_token, refresh_token);\n window.location.assign('');\n }\n}\n\n//\n// HELPERS\n//\n\n/**\n * Store the tokens and the info needed by Cognito's front-end lib to authenticate.\n */\nconst storeCognitoSession = (idToken: string, accessToken: string, refreshToken: string): void => {\n const { sub } = decodeJWTToken(idToken);\n const { client_id } = decodeJWTToken(accessToken);\n const prefix = `CognitoIdentityServiceProvider.${client_id}`;\n window.localStorage.setItem(`${prefix}.LastAuthUser`, sub);\n window.localStorage.setItem(`${prefix}.${sub}.accessToken`, accessToken);\n window.localStorage.setItem(`${prefix}.${sub}.idToken`, idToken);\n window.localStorage.setItem(`${prefix}.${sub}.refreshToken`, refreshToken);\n};\n\n/**\n * Decode a JWT token and return its payload as a JSON object.\n */\nconst decodeJWTToken = (token: string): any => {\n if (!token) return null;\n try {\n const base64Url = token.split('.')[1];\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n return JSON.parse(window.atob(base64));\n } catch (error) {\n console.error('Error decoding token:', error);\n return null;\n }\n};\n","import { Routes } from '@angular/router';\n\nimport { IDEASignInPage } from './signIn.page';\nimport { IDEASignUpPage } from './signUp.page';\nimport { IDEANewPasswordPage } from './newPassword.page';\nimport { IDEAResendLinkPage } from './resendLink.page';\nimport { IDEAForgotPasswordPage } from './forgotPassword.page';\nimport { IDEAConfirmPasswordPage } from './confirmPassword.page';\nimport { IDEAMFAChallengePage } from './mfaChallenge.page';\nimport { IDEASetupMFAPage } from './setupMFA.page';\nimport { IDEAOktaPage } from './okta.page';\n\nexport const routes: Routes = [\n { path: '', redirectTo: 'sign-in', pathMatch: 'full' },\n { path: 'sign-in', component: IDEASignInPage },\n { path: 'sign-up', component: IDEASignUpPage },\n { path: 'new-password', component: IDEANewPasswordPage },\n { path: 'mfa-challenge', component: IDEAMFAChallengePage },\n { path: 'setup-mfa', component: IDEASetupMFAPage },\n { path: 'resend-link', component: IDEAResendLinkPage },\n { path: 'forgot-password', component: IDEAForgotPasswordPage },\n { path: 'confirm-password', component: IDEAConfirmPasswordPage },\n { path: 'okta', component: IDEAOktaPage }\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@idea-ionic/auth",
3
- "version": "8.12.0",
3
+ "version": "8.12.1",
4
4
  "description": "IDEA Ionic auth flow",
5
5
  "license": "MPL-2.0",
6
6
  "author": "ITER IDEA <info@iter-idea.com> (https://iter-idea.com)",