package ru.kayashov.karthall.model.entity;

import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;

import java.util.Set;
import java.util.stream.Collectors;

@Getter
@RequiredArgsConstructor
public enum UserRole {

    RACER(Set.of("racer")), //стандартный участник
    MODERATOR(Set.of("racer", "event_admin")), //модератор события
    ADMIN(Set.of("racer", "event_admin", "championship_admin")), //модератор чемпионата
    OWNER(Set.of("racer", "event_admin", "championship_admin", "place_admin")), //модератор места проведения
    SUPERADMIN(Set.of("racer", "event_admin", "championship_admin", "place_admin", "admin")); //супер админ

    private final Set<String> authorities;

    public Set<GrantedAuthority> getAuthorities() {
        return authorities.stream()
                .map(SimpleGrantedAuthority::new)
                .collect(Collectors.toSet());
    }
}
