Merge pull request #111 from chamikaJ/fix/admin-center-teams-role-change
Enhance team member role management and localization updates
This commit is contained in:
@@ -232,7 +232,11 @@ export default class AdminCenterController extends WorklenzControllerBase {
|
|||||||
FROM team_member_info_view
|
FROM team_member_info_view
|
||||||
WHERE team_member_info_view.team_member_id = tm.id),
|
WHERE team_member_info_view.team_member_id = tm.id),
|
||||||
role_id,
|
role_id,
|
||||||
r.name AS role_name
|
r.name AS role_name,
|
||||||
|
EXISTS(SELECT email
|
||||||
|
FROM email_invitations
|
||||||
|
WHERE team_member_id = tm.id
|
||||||
|
AND email_invitations.team_id = tm.team_id) AS pending_invitation
|
||||||
FROM team_members tm
|
FROM team_members tm
|
||||||
LEFT JOIN users u on tm.user_id = u.id
|
LEFT JOIN users u on tm.user_id = u.id
|
||||||
LEFT JOIN roles r on tm.role_id = r.id
|
LEFT JOIN roles r on tm.role_id = r.id
|
||||||
|
|||||||
@@ -29,5 +29,7 @@
|
|||||||
"role": "Role",
|
"role": "Role",
|
||||||
"owner": "Owner",
|
"owner": "Owner",
|
||||||
"admin": "Admin",
|
"admin": "Admin",
|
||||||
"member": "Member"
|
"member": "Member",
|
||||||
|
"cannotChangeOwnerRole": "Owner role cannot be changed",
|
||||||
|
"pendingInvitation": "Pending invitation"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,5 +29,7 @@
|
|||||||
"role": "Rol",
|
"role": "Rol",
|
||||||
"owner": "Propietario",
|
"owner": "Propietario",
|
||||||
"admin": "Administrador",
|
"admin": "Administrador",
|
||||||
"member": "Miembro"
|
"member": "Miembro",
|
||||||
|
"cannotChangeOwnerRole": "El rol de Propietario no puede ser cambiado",
|
||||||
|
"pendingInvitation": "Invitación pendiente"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,5 +29,7 @@
|
|||||||
"role": "Rol",
|
"role": "Rol",
|
||||||
"owner": "Propietario",
|
"owner": "Propietario",
|
||||||
"admin": "Administrador",
|
"admin": "Administrador",
|
||||||
"member": "Miembro"
|
"member": "Miembro",
|
||||||
|
"cannotChangeOwnerRole": "A função de Proprietário não pode ser alterada",
|
||||||
|
"pendingInvitation": "Convite pendente"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import {
|
|||||||
Table,
|
Table,
|
||||||
TableProps,
|
TableProps,
|
||||||
Typography,
|
Typography,
|
||||||
|
Tooltip,
|
||||||
} from 'antd';
|
} from 'antd';
|
||||||
import React, { useState } from 'react';
|
import React, { useState } from 'react';
|
||||||
import { useAppDispatch } from '@/hooks/useAppDispatch';
|
import { useAppDispatch } from '@/hooks/useAppDispatch';
|
||||||
@@ -22,8 +23,6 @@ import {
|
|||||||
} from '@/types/admin-center/admin-center.types';
|
} from '@/types/admin-center/admin-center.types';
|
||||||
import SingleAvatar from '@/components/common/single-avatar/single-avatar';
|
import SingleAvatar from '@/components/common/single-avatar/single-avatar';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { API_BASE_URL } from '@/shared/constants';
|
|
||||||
import apiClient from '@/api/api-client';
|
|
||||||
|
|
||||||
interface SettingTeamDrawerProps {
|
interface SettingTeamDrawerProps {
|
||||||
teamId: string;
|
teamId: string;
|
||||||
@@ -126,15 +125,32 @@ const SettingTeamDrawer: React.FC<SettingTeamDrawerProps> = ({
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const isDisabled = record.role_name === 'Owner' || record.pending_invitation;
|
||||||
|
const tooltipTitle = record.role_name === 'Owner'
|
||||||
|
? t('cannotChangeOwnerRole')
|
||||||
|
: record.pending_invitation
|
||||||
|
? t('pendingInvitation')
|
||||||
|
: '';
|
||||||
|
|
||||||
|
const selectComponent = (
|
||||||
|
<Select
|
||||||
|
style={{ width: '150px', height: '32px' }}
|
||||||
|
options={roleOptions}
|
||||||
|
defaultValue={record.role_name || ''}
|
||||||
|
disabled={isDisabled}
|
||||||
|
onChange={handleRoleChange}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<Select
|
{isDisabled ? (
|
||||||
style={{ width: '150px', height: '32px' }}
|
<Tooltip title={tooltipTitle}>
|
||||||
options={roleOptions}
|
{selectComponent}
|
||||||
defaultValue={record.role_name || ''}
|
</Tooltip>
|
||||||
disabled={record.role_name === 'Owner'}
|
) : (
|
||||||
onChange={handleRoleChange}
|
selectComponent
|
||||||
/>
|
)}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ export interface IOrganizationTeamMember {
|
|||||||
role_id?: string;
|
role_id?: string;
|
||||||
role_name?: string;
|
role_name?: string;
|
||||||
created_at?: string;
|
created_at?: string;
|
||||||
|
pending_invitation?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IOrganizationTeam {
|
export interface IOrganizationTeam {
|
||||||
|
|||||||
Reference in New Issue
Block a user