Role.java

package com.smartsupplypro.inventory.model;

/**
 * User role enum for authorization and access control via Spring Security.
 *
 * <p><strong>Roles</strong>: ADMIN (full CRUD access), USER (read-only access).
 *
 * <p><strong>Storage</strong>: Persisted as STRING via @Enumerated(EnumType.STRING).
 *
 * @see AppUser
 * @see <a href="../../../../../docs/architecture/patterns/model-patterns.md">Model Patterns</a>
 */
public enum Role {
    ADMIN,
    USER;

    /**
     * Parses string value to Role enum (trims whitespace, removes commas).
     *
     * @param value raw role name
     * @return corresponding Role enum
     * @throws IllegalArgumentException if invalid
     */
    public static Role fromString(String value) {
        return Role.valueOf(value.trim().replace(",", ""));
    }
}