fix: club set role
This commit is contained in:
parent
5ba4ee1f90
commit
43f7a54b15
@ -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 -> {
|
||||
|
||||
@ -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">
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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">
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user