WIP
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Escrow Portal Access - RBJ Identity</title>
|
||||
<title>Escrow Portal Access - ROLCC AC</title>
|
||||
<style>
|
||||
/* Email-safe CSS - compatible with most email clients */
|
||||
body {
|
||||
@@ -236,8 +236,8 @@
|
||||
<img src="assets/rbj-logo.svg" alt="RBJ Logo" class="logo-image"
|
||||
style="height: 50px; width: auto; margin-bottom: 15px;">
|
||||
<div class="logo-text">
|
||||
<h1 style="font-size: 28px; font-weight: bold; margin: 0 0 5px 0;">RBJ Identity</h1>
|
||||
<span class="tagline" style="font-size: 14px; opacity: 0.9;">Escrow Management
|
||||
<h1 style="font-size: 28px; font-weight: bold; margin: 0 0 5px 0;">ROLCC AC</h1>
|
||||
<span class="tagline" style="font-size: 14px; opacity: 0.9;">Church Management
|
||||
Portal</span>
|
||||
</div>
|
||||
<h2 class="email-title" style="font-size: 24px; font-weight: bold; margin: 20px 0 0 0;">
|
||||
@@ -255,11 +255,11 @@
|
||||
|
||||
<div class="message"
|
||||
style="font-size: 16px; line-height: 1.6; margin-bottom: 25px; color: #4b5563;">
|
||||
Your escrow transaction is ready for review. Please use the secure link below to access
|
||||
Your church transaction is ready for review. Please use the secure link below to access
|
||||
your
|
||||
personalized portal where you can view transaction details, upload required documents,
|
||||
and communicate
|
||||
with your escrow officer.
|
||||
with your church officer.
|
||||
</div>
|
||||
|
||||
<!-- Transaction Details -->
|
||||
@@ -350,7 +350,7 @@
|
||||
This link is secure and personalized for your transaction. Please do not
|
||||
share this link with
|
||||
others. If you did not request this access or have any concerns, please
|
||||
contact your escrow officer
|
||||
contact your church officer
|
||||
immediately.
|
||||
</div>
|
||||
</td>
|
||||
@@ -360,7 +360,7 @@
|
||||
<div class="message"
|
||||
style="font-size: 16px; line-height: 1.6; margin-bottom: 25px; color: #4b5563;">
|
||||
If you have any questions or need assistance, please don't hesitate to contact your
|
||||
escrow officer
|
||||
church officer
|
||||
directly. We're here to help make your transaction as smooth as possible.
|
||||
</div>
|
||||
</td>
|
||||
@@ -371,7 +371,7 @@
|
||||
<td class="email-footer"
|
||||
style="background-color: #f8f9fa; padding: 20px; text-align: center; border-top: 1px solid #e9ecef;">
|
||||
<div class="footer-text" style="font-size: 14px; color: #6b7280; margin-bottom: 8px;">
|
||||
This email was sent by RBJ Identity Escrow Management Portal
|
||||
This email was sent by ROLCC AC Church Management Portal
|
||||
</div>
|
||||
<div class="footer-contact" style="font-size: 12px; color: #9ca3af;">
|
||||
For technical support, contact: support@clientbridge.com | Phone: (555) 123-4567
|
||||
|
||||
Generated
+2
-2
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"name": "client-bridge",
|
||||
"name": "RBJ.Identity.App",
|
||||
"version": "0.0.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "client-bridge",
|
||||
"name": "RBJ.Identity.App",
|
||||
"version": "0.0.0",
|
||||
"dependencies": {
|
||||
"@angular/animations": "^20.1.0",
|
||||
|
||||
+3
-11
@@ -1,8 +1,7 @@
|
||||
import { Component, ViewEncapsulation, OnInit } from '@angular/core';
|
||||
import { Component, ViewEncapsulation } from '@angular/core';
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { RouterOutlet } from '@angular/router';
|
||||
import { DialogModule } from '@progress/kendo-angular-dialog';
|
||||
import { AuthService } from './shared/services/auth.service';
|
||||
|
||||
@Component({
|
||||
selector: 'app-root',
|
||||
@@ -16,13 +15,6 @@ import { AuthService } from './shared/services/auth.service';
|
||||
styleUrls: ['./app.scss', '../styles.scss'],
|
||||
encapsulation: ViewEncapsulation.None
|
||||
})
|
||||
export class App implements OnInit {
|
||||
title = 'RBJ Identity';
|
||||
|
||||
constructor(private authService: AuthService) { }
|
||||
|
||||
ngOnInit(): void {
|
||||
// Initialize authentication state from refresh token cookie
|
||||
this.authService.initializeFromRefreshToken();
|
||||
}
|
||||
export class App {
|
||||
title = 'ROLCC AC';
|
||||
}
|
||||
|
||||
@@ -14,21 +14,21 @@
|
||||
<div class="logo-container">
|
||||
<img src="assets/rbj-logo.svg" alt="RBJ Logo" class="logo-image">
|
||||
<div class="logo-text">
|
||||
<h1>RBJ Identity</h1>
|
||||
<span class="tagline">Escrow Management Portal</span>
|
||||
<h1>ROLCC AC</h1>
|
||||
<span class="tagline">Church Management Portal</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="welcome-text">
|
||||
<h2>Welcome Back</h2>
|
||||
<p>Access your escrow transactions, manage client communications, and track document workflows
|
||||
<p>Access your church transactions, manage client communications, and track document workflows
|
||||
securely.</p>
|
||||
</div>
|
||||
|
||||
<div class="features-list">
|
||||
<div class="feature-item">
|
||||
<div class="feature-icon">🔒</div>
|
||||
<span>Secure Escrow Management</span>
|
||||
<span>Secure Church Management</span>
|
||||
</div>
|
||||
<div class="feature-item">
|
||||
<div class="feature-icon">💬</div>
|
||||
@@ -53,7 +53,7 @@
|
||||
<div *ngIf="!showLoginForm" class="initial-state">
|
||||
<div class="login-header">
|
||||
<h3>Access Your Account</h3>
|
||||
<p>Sign in to manage your escrow transactions and client communications</p>
|
||||
<p>Sign in to manage your church transactions and client communications</p>
|
||||
</div>
|
||||
|
||||
<div class="login-actions">
|
||||
|
||||
@@ -4,11 +4,11 @@
|
||||
<kendo-appbar-section class="k-flex-basis-0 k-flex-grow k-gap-2">
|
||||
<button kendoButton [svgIcon]="menuIcon" fillMode="clear" title="Menu" (click)="onMenuClick()"></button>
|
||||
<a href="#" class="k-d-none k-d-sm-flex logo-link">
|
||||
<img src="assets/rbj-logo.svg" class="k-h-8" alt="RBJ RBJ Identity logo" />
|
||||
<span class="logo-text">RBJ Identity Portal</span>
|
||||
<img src="assets/rbj-logo.svg" class="k-h-8" alt="RBJ ROLCC AC logo" />
|
||||
<span class="logo-text">ROLCC AC Portal</span>
|
||||
</a>
|
||||
<a href="#" class="k-d-flex k-d-sm-none">
|
||||
<img src="assets/rbj-logo.svg" class="k-h-8" alt="RBJ RBJ Identity compact logo" />
|
||||
<img src="assets/rbj-logo.svg" class="k-h-8" alt="RBJ ROLCC AC compact logo" />
|
||||
</a>
|
||||
</kendo-appbar-section>
|
||||
<kendo-appbar-section class="k-flex-basis-0 k-flex-grow k-justify-content-center">
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
<kendo-appbar-section class="k-flex-basis-0 k-flex-grow k-gap-2">
|
||||
<button kendoButton [svgIcon]="menuIcon" fillMode="clear" title="Menu" (click)="onMenuClick()"></button>
|
||||
<a href="#" class="k-d-none k-d-sm-flex logo-link">
|
||||
<img src="assets/rbj-logo.svg" class="k-h-8" alt="RBJ RBJ Identity logo" />
|
||||
<span class="logo-text">RBJ Identity Portal</span>
|
||||
<img src="assets/rbj-logo.svg" class="k-h-8" alt="RBJ ROLCC AC logo" />
|
||||
<span class="logo-text">ROLCC AC Portal</span>
|
||||
</a>
|
||||
<a href="#" class="k-d-flex k-d-sm-none">
|
||||
<img src="assets/rbj-logo.svg" class="k-h-8" alt="RBJ RBJ Identity compact logo" />
|
||||
<img src="assets/rbj-logo.svg" class="k-h-8" alt="RBJ ROLCC AC compact logo" />
|
||||
</a>
|
||||
</kendo-appbar-section>
|
||||
<kendo-appbar-section class="k-flex-basis-0 k-flex-grow k-justify-content-center">
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<div class="drawer-content">
|
||||
<div class="drawer-header">
|
||||
<h3>User Portal</h3>
|
||||
<p>RBJ Identity Portal</p>
|
||||
<p>ROLCC AC Portal</p>
|
||||
</div>
|
||||
|
||||
<nav class="drawer-nav">
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<div class="welcome-section">
|
||||
<div class="welcome-content">
|
||||
<h1>Welcome back, {{ getDisplayName() || 'User' }}!</h1>
|
||||
<p>Here's a mock overview of the RBJ Identity escrow dashboard.</p>
|
||||
<p>Here's a mock overview of the ROLCC AC church dashboard.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -123,7 +123,7 @@
|
||||
</div>
|
||||
<div class="action-content">
|
||||
<div class="action-title">New Transaction</div>
|
||||
<div class="action-description">Start a new escrow process</div>
|
||||
<div class="action-description">Start a new church process</div>
|
||||
</div>
|
||||
</button>
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
<div class="logo-section">
|
||||
<img src="assets/rbj-logo.svg" alt="RBJ Logo" class="logo-image">
|
||||
<div class="logo-text" *ngIf="!sidebarCollapsed">
|
||||
<h2>RBJ Identity</h2>
|
||||
<h2>ROLCC AC</h2>
|
||||
<span class="tagline">Escrow Portal</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Placeholder enums — expand as the escrow module is built out
|
||||
// Placeholder enums — expand as the church module is built out
|
||||
export enum EscrowStatus {
|
||||
Open = 'Open',
|
||||
Closed = 'Closed',
|
||||
|
||||
@@ -46,6 +46,8 @@ export interface TokenVerificationResult {
|
||||
isValid: boolean;
|
||||
/** Constructed from JWT claims when using secret-link login. */
|
||||
user?: UserInfo;
|
||||
/** The raw JWT from the URL — use as the access token for this session. */
|
||||
accessToken?: string;
|
||||
message?: string;
|
||||
expiresAt?: Date;
|
||||
requiresMfa?: boolean;
|
||||
@@ -56,7 +58,11 @@ export interface TokenVerificationResult {
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class AuthService {
|
||||
|
||||
/** In-memory only — never written to localStorage. */
|
||||
/**
|
||||
* In-memory only — never written to localStorage.
|
||||
* Non-private intentionally: unit tests seed state via these subjects directly.
|
||||
* Production code must use getToken(), getCurrentUser(), and setCurrentUser().
|
||||
*/
|
||||
accessToken$ = new BehaviorSubject<string | null>(null);
|
||||
currentUser$ = new BehaviorSubject<UserInfo | null>(null);
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ export class UiUtilsService {
|
||||
constructor() { }
|
||||
|
||||
/**
|
||||
* Get CSS class for escrow status
|
||||
* Get CSS class for church status
|
||||
*/
|
||||
getStatusClass(status: EscrowStatus): string {
|
||||
switch (status) {
|
||||
@@ -35,7 +35,7 @@ export class UiUtilsService {
|
||||
}
|
||||
|
||||
/**
|
||||
* Get display label for escrow status
|
||||
* Get display label for church status
|
||||
*/
|
||||
getEscrowStatusLabel(status: EscrowStatus): string {
|
||||
switch (status) {
|
||||
@@ -67,7 +67,7 @@ export class UiUtilsService {
|
||||
}
|
||||
|
||||
/**
|
||||
* Get icon for escrow status
|
||||
* Get icon for church status
|
||||
*/
|
||||
getStatusIcon(status: EscrowStatus): SVGIcon | undefined {
|
||||
switch (status) {
|
||||
@@ -96,7 +96,7 @@ export class UiUtilsService {
|
||||
return 'role-agent';
|
||||
case CbAssigneeRole.EscrowOfficer:
|
||||
case CbAssigneeRole.EscrowAssignee:
|
||||
return 'role-escrow';
|
||||
return 'role-church';
|
||||
case CbAssigneeRole.LoanBroker:
|
||||
case CbAssigneeRole.Lender:
|
||||
return 'role-lender';
|
||||
|
||||
@@ -105,7 +105,7 @@
|
||||
color: #16a34a;
|
||||
}
|
||||
|
||||
&.role-escrow {
|
||||
&.role-church {
|
||||
background: rgba(245, 158, 11, 0.1);
|
||||
color: #d97706;
|
||||
}
|
||||
@@ -248,7 +248,7 @@
|
||||
color: #4ade80;
|
||||
}
|
||||
|
||||
&.role-escrow {
|
||||
&.role-church {
|
||||
background: rgba(245, 158, 11, 0.2);
|
||||
color: #fbbf24;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
export const environment = {
|
||||
production: false,
|
||||
apiUrl: 'https://localhost:44302/api'
|
||||
apiUrl: 'http://localhost:42019/api'
|
||||
};
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>RBJ Identity</title>
|
||||
<title>ROLCC AC</title>
|
||||
<base href="/">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="icon" type="image/x-icon" href="favicon.ico">
|
||||
|
||||
@@ -2,7 +2,7 @@ export class LocalStorageKeys {
|
||||
//public static HOLIDAYS = "HOLIDAYS_FOR_DATE_PICKER";
|
||||
|
||||
public static NEW_TAB_PROFILE = "LoginPortal_newTabProfile";
|
||||
public static ESCROW_RECALL = "LoginPortal_escrowRecalls";
|
||||
public static ESCROW_RECALL = "LoginPortal_churchRecalls";
|
||||
public static SCREEN_HISTORY = "LoginPortal_screenHistory";
|
||||
public static LOGIN_ALL_ACCESS = "LoginPortal_allAccess";
|
||||
public static USER_PREFERENCE = "LoginPortal_userPreference";
|
||||
|
||||
Reference in New Issue
Block a user