afteer enabling dealer on frontend db_password fetch from google sectrets resolved , secret fech db connection order enhanced
This commit is contained in:
parent
d285ea88d8
commit
edd1967336
@ -32,7 +32,7 @@ import { AuthCallback } from '@/pages/Auth/AuthCallback';
|
||||
import { createClaimRequest } from '@/services/dealerClaimApi';
|
||||
import { ManagerSelectionModal } from '@/components/modals/ManagerSelectionModal';
|
||||
import { navigateToRequest } from '@/utils/requestNavigation';
|
||||
// import { TokenManager } from '@/utils/tokenManager';
|
||||
import { TokenManager } from '@/utils/tokenManager';
|
||||
|
||||
interface AppProps {
|
||||
onLogout?: () => void;
|
||||
@ -61,8 +61,8 @@ function DashboardRoute({ onNavigate, onNewRequest }: { onNavigate?: (page: stri
|
||||
|
||||
useEffect(() => {
|
||||
try {
|
||||
// const userData = TokenManager.getUserData();
|
||||
// // setIsDealer(userData?.jobTitle === 'Dealer');
|
||||
const userData = TokenManager.getUserData();
|
||||
setIsDealer(userData?.jobTitle === 'Dealer');
|
||||
} catch (error) {
|
||||
console.error('[App] Error checking dealer status:', error);
|
||||
setIsDealer(false);
|
||||
|
||||
@ -72,15 +72,14 @@ export function PageLayout({ children, currentPage = 'dashboard', onNavigate, on
|
||||
const items = [
|
||||
{ id: 'dashboard', label: 'Dashboard', icon: Home },
|
||||
// Add "All Requests" for all users (admin sees org-level, regular users see their participant requests)
|
||||
{ id: 'requests', label: 'All Requests', icon: List },
|
||||
{ id: 'my-requests', label: 'My Requests', icon: User, adminOnly: false },
|
||||
{ id: 'requests', label: 'All Requests', icon: List, adminOnly: false }
|
||||
// { id: 'admin/templates', label: 'Admin Templates', icon: Plus, adminOnly: true },
|
||||
];
|
||||
|
||||
// Add remaining menu items (exclude "My Requests" for dealers)
|
||||
// if (!isDealer) {
|
||||
// items.push({ id: 'my-requests', label: 'My Requests', icon: User });
|
||||
// }
|
||||
if (!isDealer) {
|
||||
items.push({ id: 'my-requests', label: 'My Requests', icon: User });
|
||||
}
|
||||
|
||||
items.push(
|
||||
{ id: 'open-requests', label: 'Open Requests', icon: FileText },
|
||||
@ -276,7 +275,7 @@ export function PageLayout({ children, currentPage = 'dashboard', onNavigate, on
|
||||
</div>
|
||||
|
||||
{/* Quick Action in Sidebar - Right below menu items */}
|
||||
{/* {!isDealer && ( */}
|
||||
{!isDealer && (
|
||||
<div className="mt-6 pt-6 border-t border-gray-800 px-3">
|
||||
<Button
|
||||
onClick={onNewRequest}
|
||||
@ -287,7 +286,7 @@ export function PageLayout({ children, currentPage = 'dashboard', onNavigate, on
|
||||
Raise New Request
|
||||
</Button>
|
||||
</div>
|
||||
{/* )} */}
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
@ -151,8 +151,7 @@ export function TemplateSelectionModal({ open, onClose, onSelectTemplate }: Temp
|
||||
whileTap={isDisabled ? {} : { scale: 0.98 }}
|
||||
>
|
||||
<Card
|
||||
className={`h-full transition-all duration-300 border-2 ${
|
||||
isDisabled
|
||||
className={`h-full transition-all duration-300 border-2 ${isDisabled
|
||||
? 'opacity-50 cursor-not-allowed border-gray-200'
|
||||
: isSelected
|
||||
? 'cursor-pointer border-blue-500 shadow-xl bg-blue-50/50 ring-2 ring-blue-200'
|
||||
@ -262,8 +261,7 @@ export function TemplateSelectionModal({ open, onClose, onSelectTemplate }: Temp
|
||||
onClick={handleContinue}
|
||||
disabled={!selectedTemplate || isDealer || AVAILABLE_TEMPLATES.find(t => t.id === selectedTemplate)?.disabled}
|
||||
size="lg"
|
||||
className={`gap-2 px-8 ${
|
||||
selectedTemplate && !isDealer && !AVAILABLE_TEMPLATES.find(t => t.id === selectedTemplate)?.disabled
|
||||
className={`gap-2 px-8 ${selectedTemplate && !isDealer && !AVAILABLE_TEMPLATES.find(t => t.id === selectedTemplate)?.disabled
|
||||
? 'bg-blue-600 hover:bg-blue-700'
|
||||
: 'bg-gray-400 cursor-not-allowed'
|
||||
}`}
|
||||
|
||||
@ -108,7 +108,7 @@ export function TemplateSelectionStep({
|
||||
</div>
|
||||
) : (
|
||||
displayTemplates.map((template) => {
|
||||
const isComingSoon = template.id === 'existing-template' && viewMode === 'main'; // Only show coming soon for placeholder
|
||||
const isComingSoon = false;
|
||||
const isDisabled = isComingSoon;
|
||||
const isCategoryCard = template.id === 'admin-templates-category';
|
||||
// const isCustomCard = template.id === 'custom';
|
||||
|
||||
@ -31,14 +31,14 @@ export function StandardClosedRequestsFilters({
|
||||
searchTerm,
|
||||
priorityFilter,
|
||||
statusFilter,
|
||||
// templateTypeFilter,
|
||||
templateTypeFilter,
|
||||
sortBy,
|
||||
sortOrder,
|
||||
activeFiltersCount,
|
||||
onSearchChange,
|
||||
onPriorityChange,
|
||||
onStatusChange,
|
||||
// onTemplateTypeChange,
|
||||
onTemplateTypeChange,
|
||||
onSortByChange,
|
||||
onSortOrderChange,
|
||||
onClearFilters,
|
||||
@ -130,7 +130,7 @@ export function StandardClosedRequestsFilters({
|
||||
</SelectItem>
|
||||
</SelectContent>
|
||||
</Select>
|
||||
{/*
|
||||
|
||||
<Select value={templateTypeFilter} onValueChange={onTemplateTypeChange}>
|
||||
<SelectTrigger className="h-9 sm:h-10 md:h-11 text-sm sm:text-base bg-gray-50 border-gray-200 focus:bg-white" data-testid="closed-requests-template-type-filter">
|
||||
<SelectValue placeholder="All Templates" />
|
||||
@ -140,7 +140,7 @@ export function StandardClosedRequestsFilters({
|
||||
<SelectItem value="CUSTOM">Non-Templatized</SelectItem>
|
||||
<SelectItem value="DEALER CLAIM">Dealer Claim</SelectItem>
|
||||
</SelectContent>
|
||||
</Select> */}
|
||||
</Select>
|
||||
|
||||
<div className="flex gap-2">
|
||||
<Select value={sortBy} onValueChange={(value) => onSortByChange(value as 'created' | 'due' | 'priority')}>
|
||||
|
||||
@ -31,13 +31,13 @@ export function StandardRequestsFilters({
|
||||
searchTerm,
|
||||
statusFilter,
|
||||
priorityFilter,
|
||||
// templateTypeFilter,
|
||||
templateTypeFilter,
|
||||
sortBy,
|
||||
sortOrder,
|
||||
onSearchChange,
|
||||
onStatusFilterChange,
|
||||
onPriorityFilterChange,
|
||||
// onTemplateTypeFilterChange,
|
||||
onTemplateTypeFilterChange,
|
||||
onSortByChange,
|
||||
onSortOrderChange,
|
||||
onClearFilters,
|
||||
@ -120,7 +120,7 @@ export function StandardRequestsFilters({
|
||||
</SelectContent>
|
||||
</Select>
|
||||
|
||||
{/* <Select value={templateTypeFilter} onValueChange={onTemplateTypeFilterChange}>
|
||||
<Select value={templateTypeFilter} onValueChange={onTemplateTypeFilterChange}>
|
||||
<SelectTrigger className="h-9 sm:h-10 md:h-11 text-sm sm:text-base bg-gray-50 border-gray-200 focus:bg-white focus:border-blue-400 focus:ring-1 focus:ring-blue-200">
|
||||
<SelectValue placeholder="All Templates" />
|
||||
</SelectTrigger>
|
||||
@ -129,7 +129,7 @@ export function StandardRequestsFilters({
|
||||
<SelectItem value="CUSTOM">Non-Templatized</SelectItem>
|
||||
<SelectItem value="DEALER CLAIM">Dealer Claim</SelectItem>
|
||||
</SelectContent>
|
||||
</Select> */}
|
||||
</Select>
|
||||
|
||||
<div className="flex gap-2">
|
||||
<Select value={sortBy} onValueChange={(value: any) => onSortByChange(value)}>
|
||||
|
||||
@ -87,7 +87,7 @@ export function StandardUserAllRequestsFilters({
|
||||
searchTerm,
|
||||
statusFilter,
|
||||
priorityFilter,
|
||||
// templateTypeFilter,
|
||||
templateTypeFilter,
|
||||
departmentFilter,
|
||||
slaComplianceFilter,
|
||||
initiatorFilter: _initiatorFilter,
|
||||
@ -104,7 +104,7 @@ export function StandardUserAllRequestsFilters({
|
||||
onSearchChange,
|
||||
onStatusChange,
|
||||
onPriorityChange,
|
||||
// onTemplateTypeChange,
|
||||
onTemplateTypeChange,
|
||||
onDepartmentChange,
|
||||
onSlaComplianceChange,
|
||||
onInitiatorChange: _onInitiatorChange,
|
||||
@ -180,7 +180,7 @@ export function StandardUserAllRequestsFilters({
|
||||
</SelectContent>
|
||||
</Select>
|
||||
|
||||
{/* <Select value={templateTypeFilter} onValueChange={onTemplateTypeChange}>
|
||||
<Select value={templateTypeFilter} onValueChange={onTemplateTypeChange}>
|
||||
<SelectTrigger className="h-10" data-testid="template-type-filter">
|
||||
<SelectValue placeholder="All Templates" />
|
||||
</SelectTrigger>
|
||||
@ -189,7 +189,7 @@ export function StandardUserAllRequestsFilters({
|
||||
<SelectItem value="CUSTOM">Custom</SelectItem>
|
||||
<SelectItem value="DEALER CLAIM">Dealer Claim</SelectItem>
|
||||
</SelectContent>
|
||||
</Select> */}
|
||||
</Select>
|
||||
|
||||
<Select
|
||||
value={departmentFilter}
|
||||
|
||||
@ -2,13 +2,13 @@ import { useState, useEffect } from 'react';
|
||||
import { useAuth } from '@/contexts/AuthContext';
|
||||
import { Button } from '@/components/ui/button';
|
||||
import { Card, CardContent, CardHeader } from '@/components/ui/card';
|
||||
import { LogIn } from 'lucide-react';
|
||||
import { LogIn, Shield } from 'lucide-react';
|
||||
import { ReLogo, LandingPageImage } from '@/assets';
|
||||
// import { initiateTanflowLogin } from '@/services/tanflowAuth';
|
||||
import { initiateTanflowLogin } from '@/services/tanflowAuth';
|
||||
|
||||
export function Auth() {
|
||||
const { login, isLoading, error } = useAuth();
|
||||
const [tanflowLoading] = useState(false);
|
||||
const [tanflowLoading, setTanflowLoading] = useState(false);
|
||||
const [imageLoaded, setImageLoaded] = useState(false);
|
||||
|
||||
// Preload the background image
|
||||
@ -41,7 +41,7 @@ export function Auth() {
|
||||
}
|
||||
};
|
||||
|
||||
/* const handleTanflowLogin = () => {
|
||||
const handleTanflowLogin = () => {
|
||||
// Clear any existing session data
|
||||
localStorage.clear();
|
||||
sessionStorage.clear();
|
||||
@ -55,7 +55,7 @@ export function Auth() {
|
||||
console.error('Error details:', loginError);
|
||||
setTanflowLoading(false);
|
||||
}
|
||||
}; */
|
||||
};
|
||||
|
||||
if (error) {
|
||||
console.error('Auth Error in Auth Component:', {
|
||||
@ -123,7 +123,7 @@ export function Auth() {
|
||||
</>
|
||||
)}
|
||||
</Button>
|
||||
{/*
|
||||
|
||||
<div className="relative">
|
||||
<div className="absolute inset-0 flex items-center">
|
||||
<span className="w-full border-t border-gray-700"></span>
|
||||
@ -152,7 +152,7 @@ export function Auth() {
|
||||
Dealer Login
|
||||
</>
|
||||
)}
|
||||
</Button> */}
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
<div className="text-center text-sm text-gray-400 mt-4">
|
||||
|
||||
@ -29,14 +29,14 @@ export function ClosedRequestsFilters({
|
||||
searchTerm,
|
||||
priorityFilter,
|
||||
statusFilter,
|
||||
// templateTypeFilter,
|
||||
templateTypeFilter,
|
||||
sortBy,
|
||||
sortOrder,
|
||||
activeFiltersCount,
|
||||
onSearchChange,
|
||||
onPriorityChange,
|
||||
onStatusChange,
|
||||
// onTemplateTypeChange,
|
||||
onTemplateTypeChange,
|
||||
onSortByChange,
|
||||
onSortOrderChange,
|
||||
onClearFilters,
|
||||
@ -129,7 +129,7 @@ export function ClosedRequestsFilters({
|
||||
</SelectContent>
|
||||
</Select>
|
||||
|
||||
{/* <Select value={templateTypeFilter} onValueChange={onTemplateTypeChange}>
|
||||
<Select value={templateTypeFilter} onValueChange={onTemplateTypeChange}>
|
||||
<SelectTrigger className="h-9 sm:h-10 md:h-11 text-sm sm:text-base bg-gray-50 border-gray-200 focus:bg-white" data-testid="closed-requests-template-type-filter">
|
||||
<SelectValue placeholder="All Templates" />
|
||||
</SelectTrigger>
|
||||
@ -138,7 +138,7 @@ export function ClosedRequestsFilters({
|
||||
<SelectItem value="CUSTOM">Non-Templatized</SelectItem>
|
||||
<SelectItem value="DEALER CLAIM">Dealer Claim</SelectItem>
|
||||
</SelectContent>
|
||||
</Select> */}
|
||||
</Select>
|
||||
|
||||
<div className="flex gap-2">
|
||||
<Select value={sortBy} onValueChange={(value) => onSortByChange(value as 'created' | 'due' | 'priority')}>
|
||||
|
||||
@ -22,11 +22,11 @@ export function MyRequestsFilters({
|
||||
searchTerm,
|
||||
statusFilter,
|
||||
priorityFilter,
|
||||
// templateTypeFilter,
|
||||
templateTypeFilter,
|
||||
onSearchChange,
|
||||
onStatusChange,
|
||||
onPriorityChange,
|
||||
// onTemplateTypeChange,
|
||||
onTemplateTypeChange,
|
||||
}: MyRequestsFiltersProps) {
|
||||
return (
|
||||
<Card className="border-gray-200" data-testid="my-requests-filters">
|
||||
@ -76,7 +76,7 @@ export function MyRequestsFilters({
|
||||
</SelectContent>
|
||||
</Select>
|
||||
|
||||
{/* <Select value={templateTypeFilter} onValueChange={onTemplateTypeChange}>
|
||||
<Select value={templateTypeFilter} onValueChange={onTemplateTypeChange}>
|
||||
<SelectTrigger
|
||||
className="flex-1 md:w-28 lg:w-32 text-xs sm:text-sm bg-white border-gray-300 hover:border-gray-400 focus:border-blue-400 focus:ring-1 focus:ring-blue-200 h-9 sm:h-10"
|
||||
data-testid="template-type-filter"
|
||||
@ -88,7 +88,7 @@ export function MyRequestsFilters({
|
||||
<SelectItem value="CUSTOM">Non-Templatized</SelectItem>
|
||||
<SelectItem value="DEALER CLAIM">Dealer Claim</SelectItem>
|
||||
</SelectContent>
|
||||
</Select> */}
|
||||
</Select>
|
||||
</div>
|
||||
</div>
|
||||
</CardContent>
|
||||
|
||||
@ -590,7 +590,7 @@ export function Requests({ onViewRequest }: RequestsProps) {
|
||||
</SelectContent>
|
||||
</Select>
|
||||
|
||||
{/* <Select value={filters.templateTypeFilter} onValueChange={filters.setTemplateTypeFilter}>
|
||||
<Select value={filters.templateTypeFilter} onValueChange={filters.setTemplateTypeFilter}>
|
||||
<SelectTrigger className="h-10" data-testid="template-type-filter">
|
||||
<SelectValue placeholder="All Templates" />
|
||||
</SelectTrigger>
|
||||
@ -599,7 +599,7 @@ export function Requests({ onViewRequest }: RequestsProps) {
|
||||
<SelectItem value="CUSTOM">Non-Templatized</SelectItem>
|
||||
<SelectItem value="DEALER CLAIM">Dealer Claim</SelectItem>
|
||||
</SelectContent>
|
||||
</Select> */}
|
||||
</Select>
|
||||
|
||||
<Select
|
||||
value={filters.departmentFilter}
|
||||
|
||||
@ -197,14 +197,14 @@ export function Settings() {
|
||||
<span className="hidden sm:inline">Holidays</span>
|
||||
<span className="sm:hidden">Holidays</span>
|
||||
</TabsTrigger>
|
||||
{/* <TabsTrigger
|
||||
<TabsTrigger
|
||||
value="templates"
|
||||
className="flex items-center justify-center gap-2 py-3 rounded-lg data-[state=active]:bg-white data-[state=active]:shadow-md transition-all"
|
||||
>
|
||||
<FileText className="w-4 h-4" />
|
||||
<span className="hidden sm:inline">Templates</span>
|
||||
<span className="sm:hidden">Templates</span>
|
||||
</TabsTrigger> */}
|
||||
</TabsTrigger>
|
||||
</TabsList>
|
||||
|
||||
{/* Fixed width container to prevent layout shifts */}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user