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