mirror of
https://github.com/9technologygroup/patchmon.net.git
synced 2025-11-04 14:03:17 +00:00
Fixed authentication redirect upon signin using states
Finally fixed dashboard defaults for new user signups
This commit is contained in:
@@ -57,30 +57,33 @@ async function createDefaultDashboardPreferences(userId, userRole = 'user') {
|
||||
const permissions = await getUserPermissions(userRole);
|
||||
|
||||
// Define all possible dashboard cards with their required permissions
|
||||
// Order aligned with preferred layout
|
||||
const allCards = [
|
||||
// Host-related cards
|
||||
{ cardId: 'totalHosts', requiredPermission: 'can_view_hosts', order: 0 },
|
||||
{ cardId: 'hostsNeedingUpdates', requiredPermission: 'can_view_hosts', order: 1 },
|
||||
{ cardId: 'upToDateHosts', requiredPermission: 'can_view_hosts', order: 2 },
|
||||
{ cardId: 'totalHostGroups', requiredPermission: 'can_view_hosts', order: 3 },
|
||||
|
||||
// Package-related cards
|
||||
{ cardId: 'totalOutdatedPackages', requiredPermission: 'can_view_packages', order: 4 },
|
||||
{ cardId: 'securityUpdates', requiredPermission: 'can_view_packages', order: 5 },
|
||||
{ cardId: 'packagePriority', requiredPermission: 'can_view_packages', order: 6 },
|
||||
{ cardId: 'totalOutdatedPackages', requiredPermission: 'can_view_packages', order: 2 },
|
||||
{ cardId: 'securityUpdates', requiredPermission: 'can_view_packages', order: 3 },
|
||||
|
||||
// Host-related cards (continued)
|
||||
{ cardId: 'totalHostGroups', requiredPermission: 'can_view_hosts', order: 4 },
|
||||
{ cardId: 'upToDateHosts', requiredPermission: 'can_view_hosts', order: 5 },
|
||||
|
||||
// Repository-related cards
|
||||
{ cardId: 'totalRepos', requiredPermission: 'can_view_hosts', order: 7 }, // Repos are host-related
|
||||
{ cardId: 'totalRepos', requiredPermission: 'can_view_hosts', order: 6 },
|
||||
|
||||
// User management cards (admin only)
|
||||
{ cardId: 'totalUsers', requiredPermission: 'can_view_users', order: 8 },
|
||||
{ cardId: 'recentUsers', requiredPermission: 'can_view_users', order: 9 },
|
||||
{ cardId: 'totalUsers', requiredPermission: 'can_view_users', order: 7 },
|
||||
|
||||
// System/Report cards
|
||||
{ cardId: 'osDistribution', requiredPermission: 'can_view_reports', order: 10 },
|
||||
{ cardId: 'osDistributionBar', requiredPermission: 'can_view_reports', order: 11 },
|
||||
{ cardId: 'updateStatus', requiredPermission: 'can_view_reports', order: 12 },
|
||||
{ cardId: 'recentCollection', requiredPermission: 'can_view_hosts', order: 13 }, // Collection is host-related
|
||||
{ cardId: 'osDistribution', requiredPermission: 'can_view_reports', order: 8 },
|
||||
{ cardId: 'osDistributionBar', requiredPermission: 'can_view_reports', order: 9 },
|
||||
{ cardId: 'recentCollection', requiredPermission: 'can_view_hosts', order: 10 },
|
||||
{ cardId: 'updateStatus', requiredPermission: 'can_view_reports', order: 11 },
|
||||
{ cardId: 'packagePriority', requiredPermission: 'can_view_packages', order: 12 },
|
||||
{ cardId: 'recentUsers', requiredPermission: 'can_view_users', order: 13 },
|
||||
{ cardId: 'quickStats', requiredPermission: 'can_view_dashboard', order: 14 }
|
||||
];
|
||||
|
||||
@@ -174,7 +177,6 @@ router.put('/', authenticateToken, [
|
||||
// Get default dashboard card configuration
|
||||
router.get('/defaults', authenticateToken, async (req, res) => {
|
||||
try {
|
||||
// Default configuration based on iby's (Muhammad Ibrahim) preferred layout
|
||||
// This provides a comprehensive dashboard view for all new users
|
||||
const defaultCards = [
|
||||
{ cardId: 'totalHosts', title: 'Total Hosts', icon: 'Server', enabled: true, order: 0 },
|
||||
@@ -182,7 +184,7 @@ router.get('/defaults', authenticateToken, async (req, res) => {
|
||||
{ cardId: 'totalOutdatedPackages', title: 'Outdated Packages', icon: 'Package', enabled: true, order: 2 },
|
||||
{ cardId: 'securityUpdates', title: 'Security Updates', icon: 'Shield', enabled: true, order: 3 },
|
||||
{ cardId: 'totalHostGroups', title: 'Host Groups', icon: 'Folder', enabled: true, order: 4 },
|
||||
{ cardId: 'upToDateHosts', title: 'Up to date', icon: 'CheckCircle', enabled: true, order: 5 },
|
||||
{ cardId: 'hostsNeedingUpdates', title: 'Up to date', icon: 'CheckCircle', enabled: true, order: 5 },
|
||||
{ cardId: 'totalRepos', title: 'Repositories', icon: 'GitBranch', enabled: true, order: 6 },
|
||||
{ cardId: 'totalUsers', title: 'Users', icon: 'Users', enabled: true, order: 7 },
|
||||
{ cardId: 'osDistribution', title: 'OS Distribution', icon: 'BarChart3', enabled: true, order: 8 },
|
||||
|
||||
@@ -666,7 +666,6 @@ async function getPermissionBasedPreferences(userRole) {
|
||||
const permissions = await getUserPermissions(userRole);
|
||||
|
||||
// Define all possible dashboard cards with their required permissions
|
||||
// Order matches iby's (Muhammad Ibrahim) preferred layout
|
||||
const allCards = [
|
||||
// Host-related cards
|
||||
{ cardId: 'totalHosts', requiredPermission: 'can_view_hosts', order: 0 },
|
||||
|
||||
@@ -255,6 +255,13 @@ export const AuthProvider = ({ children }) => {
|
||||
}
|
||||
}, [token, user, checkAdminUsersExist])
|
||||
|
||||
const setAuthState = (authToken, authUser) => {
|
||||
setToken(authToken)
|
||||
setUser(authUser)
|
||||
localStorage.setItem('token', authToken)
|
||||
localStorage.setItem('user', JSON.stringify(authUser))
|
||||
}
|
||||
|
||||
const value = {
|
||||
user,
|
||||
token,
|
||||
@@ -267,6 +274,7 @@ export const AuthProvider = ({ children }) => {
|
||||
updateProfile,
|
||||
changePassword,
|
||||
refreshPermissions,
|
||||
setAuthState,
|
||||
isAuthenticated,
|
||||
isAdmin,
|
||||
hasPermission,
|
||||
|
||||
@@ -24,7 +24,7 @@ const Login = () => {
|
||||
const [signupEnabled, setSignupEnabled] = useState(false)
|
||||
|
||||
const navigate = useNavigate()
|
||||
const { login } = useAuth()
|
||||
const { login, setAuthState } = useAuth()
|
||||
|
||||
// Check if signup is enabled
|
||||
useEffect(() => {
|
||||
@@ -80,9 +80,8 @@ const Login = () => {
|
||||
try {
|
||||
const response = await authAPI.signup(formData.username, formData.email, formData.password, formData.firstName, formData.lastName)
|
||||
if (response.data && response.data.token) {
|
||||
// Store token and user data
|
||||
localStorage.setItem('token', response.data.token)
|
||||
localStorage.setItem('user', JSON.stringify(response.data.user))
|
||||
// Update AuthContext state and localStorage
|
||||
setAuthState(response.data.token, response.data.user)
|
||||
|
||||
// Redirect to dashboard
|
||||
navigate('/')
|
||||
|
||||
Reference in New Issue
Block a user