fix: club set role

This commit is contained in:
Thibaut Valentin 2024-07-17 12:21:37 +02:00
parent 5ba4ee1f90
commit 43f7a54b15
4 changed files with 11 additions and 14 deletions

View File

@ -159,7 +159,7 @@ public class MembreService {
if (securityIdentity.getRoles().contains("club_president")) source = RoleAsso.PRESIDENT;
else if (securityIdentity.getRoles().contains("club_secretaire")) source = RoleAsso.SECRETAIRE;
else if (securityIdentity.getRoles().contains("club_respo_intra")) source = RoleAsso.MEMBREBUREAU;
if (!membre.getRole().equals(membreModel.getRole()) && membre.getRole().level > source.level)
if (!membre.getRole().equals(membreModel.getRole()) && membre.getRole().level >= source.level)
throw new ForbiddenException();
}))
.onItem().transformToUni(target -> {

View File

@ -46,7 +46,7 @@ function ClubMenu() {
const {is_authenticated, userinfo} = useAuth()
if (!is_authenticated || !(userinfo?.roles?.includes("club_president")
|| userinfo?.roles?.includes("club_secretaire") || userinfo?.roles?.includes("club_tresorier")))
|| userinfo?.roles?.includes("club_secretaire") || userinfo?.roles?.includes("club_respo_intra")))
return <></>
return <li className="nav-item dropdown">

View File

@ -11,12 +11,6 @@ import {apiAxios} from "../utils/Tools.js";
import {toast} from "react-toastify";
import {SearchBar} from "../components/SearchBar.jsx";
const removeDiacritics = str => {
return str
.normalize('NFD')
.replace(/[\u0300-\u036f]/g, '')
}
export function MemberList({source}) {
const {hash} = useLocation();
const navigate = useNavigate();
@ -47,6 +41,7 @@ export function MemberList({source}) {
fname: e.fname,
lname: e.lname,
club: e.club,
categorie: e.categorie,
licence_number: e.licence,
licence: showLicenceState ? licenceData.find(licence => licence.membre === e.id) : null
})
@ -84,7 +79,7 @@ export function MemberList({source}) {
<SearchBar search={search}/>
{data
? <MakeCentralPanel data={data} visibleMember={memberData} navigate={navigate} showLicenceState={showLicenceState}
page={page}/>
page={page} source={source}/>
: error
? <AxiosError error={error}/>
: <Def/>
@ -107,7 +102,7 @@ export function MemberList({source}) {
</>
}
function MakeCentralPanel({data, visibleMember, navigate, showLicenceState, page}) {
function MakeCentralPanel({data, visibleMember, navigate, showLicenceState, page, source}) {
const pages = []
for (let i = 1; i <= data.page_count; i++) {
pages.push(<li key={i} className={"page-item " + ((page === i) ? "active" : "")}>
@ -120,7 +115,7 @@ function MakeCentralPanel({data, visibleMember, navigate, showLicenceState, page
<small>Ligne {((page - 1) * data.page_size) + 1} à {
(page * data.page_size > data.result_count) ? data.result_count : (page * data.page_size)} (page {page} sur {data.page_count})</small>
<div className="list-group">
{visibleMember.map(member => (<MakeRow key={member.id} member={member} navigate={navigate} showLicenceState={showLicenceState}/>))}
{visibleMember.map(member => (<MakeRow key={member.id} member={member} navigate={navigate} showLicenceState={showLicenceState} source={source}/>))}
</div>
</div>
<div className="mb-4">
@ -137,7 +132,7 @@ function MakeCentralPanel({data, visibleMember, navigate, showLicenceState, page
</>
}
function MakeRow({member, showLicenceState, navigate}) {
function MakeRow({member, showLicenceState, navigate, source}) {
const rowContent = <>
<div className="row">
<span className="col-auto">{String(member.licence_number).padStart(5, '0')}</span>
@ -145,7 +140,9 @@ function MakeRow({member, showLicenceState, navigate}) {
<div className="fw-bold">{member.fname} {member.lname}</div>
</div>
</div>
<small>{member.club?.name || "Sans club"}</small>
{source === "club" ?
<small>{member.categorie}</small>
: <small>{member.club?.name || "Sans club"}</small>}
</>
if (showLicenceState && member.licence != null) {

View File

@ -55,7 +55,7 @@ export function InformationForm({data}) {
<CountryList name="country" text="Pays" value={data.country}/>
<BirthDayField inti_date={data.birth_date ? data.birth_date.split('T')[0] : ''}
inti_category={data.categorie}/>
<RoleList name="role" text="Rôle" value={data.role} disabled={true}/>
<RoleList name="role" text="Rôle" value={data.role}/>
<OptionField name="grade_arbitrage" text="Grade d'arbitrage" value={data.grade_arbitrage}
values={{NA: 'N/A', ASSESSEUR: 'Assesseur', ARBITRE: 'Arbitre'}} disabled={true}/>
<div className="row">