diff --git a/dashboard/src/app/(inside)/user/[id]/page.tsx b/dashboard/src/app/(inside)/user/[id]/page.tsx
index e590abc..2fff21c 100644
--- a/dashboard/src/app/(inside)/user/[id]/page.tsx
+++ b/dashboard/src/app/(inside)/user/[id]/page.tsx
@@ -92,7 +92,10 @@ export default async function UserDetailsPage({ params }: { params: Promise<{ id
const pmEditUser = await checkPermission(permission.user.it, relation.edit, identityId);
const pmDeleteUser = await checkPermission(permission.user.it, relation.delete, identityId);
- const pmAccessUserTraits = await checkPermission(permission.user.trait, relation.access, identityId);
+ const pmAccessUserTrait = await checkPermission(permission.user.trait, relation.access, identityId);
+ const pmEditUserTraits = await checkPermission(permission.user.trait, relation.edit, identityId);
+ const pmAccessUserAddress = await checkPermission(permission.user.address, relation.access, identityId);
+ const pmAccessUserCredential = await checkPermission(permission.user.credential, relation.access, identityId);
const pmEditUserState = await checkPermission(permission.user.state, relation.edit, identityId);
const pmAccessUserSession = await checkPermission(permission.user.session, relation.access, identityId);
const pmDeleteUserSession = await checkPermission(permission.user.session, relation.delete, identityId);
@@ -114,7 +117,6 @@ export default async function UserDetailsPage({ params }: { params: Promise<{ id
message="The identity you are trying to see exists but has no identifiable address"/>;
}
-
const detailIdentitySessions = pmAccessUserSession && await listIdentitySessions(detailIdentityId);
const detailIdentitySchema = await getIdentitySchema(detailIdentity.schema_id)
@@ -133,7 +135,7 @@ export default async function UserDetailsPage({ params }: { params: Promise<{ id
{
- pmAccessUserTraits ?
+ pmAccessUserTrait ?
Traits
@@ -170,98 +172,44 @@ export default async function UserDetailsPage({ params }: { params: Promise<{ id
/>
-
-
- Addresses
- All linked addresses for verification and recovery
-
-
+ {
+ pmAccessUserAddress ?
+
+
+ Addresses
+ All linked addresses for verification and recovery
+
+
-
-
-
- Type
- Value
-
-
-
- {
- addresses.map((address) => {
- return (
-
- {address.value}
- {address.via}
-
- {address.verifiable_id &&
-
- Verifiable
- {
- address.verified ?
-
- :
-
- }
-
- }
- {address.recovery_id &&
- Recovery
- }
-
-
- );
- })
- }
-
-
-
-
-
-
- Credentials
- All authentication mechanisms registered with this identity
-
-
-
-
-
-
-
- Sessions
- See and manage all sessions of this identity
-
-
- {
- detailIdentitySessions ?
- OS
- Browser
- Active since
+ Type
+ Value
{
- detailIdentitySessions.map((session) => {
-
- const device = session.devices![0];
- const parser = new UAParser(device.user_agent);
- const result = parser.getResult();
-
+ addresses.map((address) => {
return (
-
-
- {result.os.name}
- {result.os.version}
-
-
- {result.browser.name}
- {result.browser.version}
-
+
+ {address.value}
+ {address.via}
- {new Date(session.authenticated_at!).toLocaleString()}
+ {address.verifiable_id &&
+
+ Verifiable
+ {
+ address.verified ?
+
+ :
+
+ }
+
+ }
+ {address.recovery_id &&
+ Recovery
+ }
);
@@ -269,11 +217,90 @@ export default async function UserDetailsPage({ params }: { params: Promise<{ id
}
- :
- This user has no active sessions
- }
-
-
+
+
+ :
+
+ }
+ {
+ pmAccessUserCredential ?
+
+
+ Credentials
+ All authentication mechanisms registered with this
+ identity
+
+
+
+
+
+ :
+
+ }
+ {
+ pmAccessUserSession ?
+
+
+ Sessions
+ See and manage all sessions of this identity
+
+
+ {
+ detailIdentitySessions ?
+
+
+
+ OS
+ Browser
+ Active since
+
+
+
+ {
+ detailIdentitySessions.map((session) => {
+
+ const device = session.devices![0];
+ const parser = new UAParser(device.user_agent);
+ const result = parser.getResult();
+
+ return (
+
+
+ {result.os.name}
+ {result.os.version}
+
+
+ {result.browser.name}
+ {result.browser.version}
+
+
+ {new Date(session.authenticated_at!).toLocaleString()}
+
+
+ );
+ })
+ }
+
+
+ :
+ This user has no active sessions
+ }
+
+
+ :
+
+ }
);
diff --git a/dashboard/src/lib/permission.ts b/dashboard/src/lib/permission.ts
index 69a8523..9fc8ba0 100644
--- a/dashboard/src/lib/permission.ts
+++ b/dashboard/src/lib/permission.ts
@@ -5,6 +5,7 @@ export const permission = {
},
user: {
it: 'admin.user',
+ address: 'admin.user.address',
code: 'admin.user.code',
credential: 'admin.user.credential',
link: 'admin.user.link',