This commit is contained in:
Chris Chen
2026-05-27 07:49:26 -07:00
parent 62428cd2d4
commit 60405ef0aa
19 changed files with 74 additions and 49 deletions
+3 -11
View File
@@ -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 -1
View File
@@ -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',
+7 -1
View File
@@ -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';
+2 -2
View File
@@ -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;
}