authen
.public
Tables
(current)
Columns
Constraints
Relationships
Orphan Tables
Anomalies
Routines
fn_role_assign_violation
Parameters
Name
Type
Mode
v_group_ids
int4[]
IN
v_prop_id
integer
IN
v_actor_type
text
IN
Definition
DECLARE v_actor_rank integer := CASE WHEN v_actor_type IS NULL OR v_actor_type IN ('S', 'X') THEN 0 ELSE public.fn_group_type_rank(v_actor_type) END; v_has_prop_group boolean; r record; BEGIN IF v_group_ids IS NULL OR array_length(v_group_ids, 1) IS NULL THEN RETURN NULL; END IF; SELECT (prop_group_id IS NOT NULL) INTO v_has_prop_group FROM public.property WHERE id = v_prop_id; FOR r IN SELECT ug.group_type FROM public.user_group ug WHERE ug.id = ANY(v_group_ids) LOOP IF r.group_type = 'G' AND NOT COALESCE(v_has_prop_group, false) THEN RETURN 'Group Administrator role requires a property group'; END IF; IF public.fn_group_type_rank(r.group_type) < v_actor_rank THEN RETURN 'Cannot assign role above your level'; END IF; END LOOP; RETURN NULL; END