diff --git a/capif_frontend/src/configs/acl.js b/capif_frontend/src/configs/acl.js index 44b15d6d3f92c0a56ca429f2e81805d77105ead4..9896c23e74392f1c667c6376e942d10a90418caf 100644 --- a/capif_frontend/src/configs/acl.js +++ b/capif_frontend/src/configs/acl.js @@ -8,15 +8,18 @@ export const AppAbility = Ability * admin can manage everything and client can just visit ACL page */ const defineRulesFor = (role, subject) => { - const { can, rules } = new AbilityBuilder(AppAbility) + const { can, cannot, rules } = new AbilityBuilder(AppAbility) if (role === 'admin') { can('manage', 'all') + cannot('read', 'user-home') + } else if (role === 'user') { + can('read', 'user-home') } else if (role === 'client') { can(['read'], 'acl-page') - } else { - can(['read', 'create', 'update', 'delete'], subject) } - + // unknown role gets zero rules, which means no access to anything + // Add more roles and rules as needed for your application + return rules } diff --git a/capif_frontend/src/context/AuthContext.js b/capif_frontend/src/context/AuthContext.js index 278aded9f0fe8aca2801defcba924d4893859b76..a9d9010b3b3ced3604c82056b5c728260e1a9f08 100644 --- a/capif_frontend/src/context/AuthContext.js +++ b/capif_frontend/src/context/AuthContext.js @@ -12,7 +12,6 @@ import authConfig from 'src/configs/auth' import { clearCookies, getAccessToken, - getUserData, setAccessToken, setRefreshToken, setUserData @@ -69,7 +68,7 @@ const AuthProvider = ({ children }) => { console.log('After auth/me request') console.log('AuthContext response: ', response) - setUser(getUserData()) // getUserData() -> devuelve el objeto JSON almacenado en la cookie USER_DATA_KEY + setUser({username: response.data.user, role: response.data.role}) setLoading(false) // IF TOKEN VALIDATION FAILS, @@ -81,7 +80,7 @@ const AuthProvider = ({ children }) => { const response = await axiosInstance.post(authConfig.refreshEndpoint) setAccessToken(response.data.access_token) console.log('AuthContext access token: ', response.data.access_token) - setUser(getUserData()) + setUser({username: response.data.user, role: response.data.role}) setLoading(false) } catch (error) { // clearCookies() @@ -118,24 +117,16 @@ const AuthProvider = ({ children }) => { console.log('Login request completed successfully') - if (params.rememberMe) { - console.log('Entered params.rememberMe branch') - setAccessToken(response.data.access_token) - console.log('AuthContext access token: ', response.data.access_token) - const pruebatoken = getAccessToken() - setRefreshToken(response.data.refresh_token) - console.log - setUserData({ username: params.username, role: 'admin' }) - } + setAccessToken(response.data.access_token) + setRefreshToken(response.data.refresh_token) + setUserData({ username: params.username, role: response.data.role }) const returnUrl = router.query.returnUrl - setUser({ username: params.username, role: 'admin' }) + setUser({ username: params.username, role: response.data.role }) const redirectURL = returnUrl && returnUrl !== '/' ? returnUrl : '/' router.replace(redirectURL) - const prueba = getAccessToken() - } catch (err) { console.log(err) if (errorCallback) errorCallback(err) diff --git a/capif_frontend/src/layouts/components/acl/getHomeRoute.js b/capif_frontend/src/layouts/components/acl/getHomeRoute.js index 21e9ab896f9634bd8829198fe9ac503a49a3e74a..b5e63c5abd0a6f34128aabdacbe160ba71f72e51 100644 --- a/capif_frontend/src/layouts/components/acl/getHomeRoute.js +++ b/capif_frontend/src/layouts/components/acl/getHomeRoute.js @@ -3,6 +3,7 @@ */ const getHomeRoute = role => { if (role === 'client') return '/acl' + else if (role === 'user') return '/home' else return '/home-dashboards' } diff --git a/capif_frontend/src/navigation/vertical/index.js b/capif_frontend/src/navigation/vertical/index.js index b20f1e3f3b02c587dac4bfd87b0649b817339c9a..6718f8edf3f8ba45c6d7ebb8e2bd27a29a6d4b76 100644 --- a/capif_frontend/src/navigation/vertical/index.js +++ b/capif_frontend/src/navigation/vertical/index.js @@ -1,34 +1,53 @@ const navigation = () => { return [ + { + title: 'Home', + icon: 'mdi:home-outline', + path: '/home', + action: 'read', + subject: 'user-home' + }, { title: 'Dashboard', icon: 'mdi:home-outline', - path: '/home-dashboards' + path: '/home-dashboards', + action: 'manage', + subject: 'all' }, { title: 'Invokers', icon: 'mdi:baseline-people', - path: '/invokers' + path: '/invokers', + action: 'manage', + subject: 'all' }, { title: 'Providers', icon: 'mdi:baseline-people', - path: '/providers' + path: '/providers', + action: 'manage', + subject: 'all' }, { title: 'APIs', icon: 'mdi:baseline-people', - path: '/services' + path: '/services', + action: 'manage', + subject: 'all' }, { title: 'Users', icon: 'mdi:baseline-people', - path: '/users' + path: '/users', + action: 'manage', + subject: 'all' }, { title: 'Configuration', icon: 'mdi:baseline-people', - path: '/configuration' + path: '/configuration', + action: 'manage', + subject: 'all' } // , diff --git a/capif_frontend/src/pages/home/index.js b/capif_frontend/src/pages/home/index.js new file mode 100644 index 0000000000000000000000000000000000000000..0016d9996a6caee7ce561943a33099bc61680108 --- /dev/null +++ b/capif_frontend/src/pages/home/index.js @@ -0,0 +1,18 @@ +import Box from '@mui/material/Box' +import Typography from '@mui/material/Typography' + +const Home = () => { + return ( + + Welcome to the Home Page + You are logged in. + + ) +} + +Home.acl = { + action: 'read', + subject: 'user-home' +} + +export default Home \ No newline at end of file