added role cards to permission screen (#4401)

* simplify creating new roles by auto-replacing input
This commit is contained in:
Kevin Papst
2023-11-04 20:17:05 +01:00
committed by GitHub
parent 0b1625175b
commit a1d9874c13
7 changed files with 98 additions and 90 deletions

View File

@@ -34,22 +34,43 @@ final class RoleType extends AbstractType
]
]);
$replacer = function ($roleName): ?string {
if ($roleName === null) {
return null;
}
if (\is_string($roleName)) {
$roleName = preg_replace('/[^a-zA-Z_]/', '_', $roleName);
$roleName = preg_replace('/_+/', '_', $roleName ?? '');
$roleName = ltrim($roleName ?? '', '_');
$roleName = rtrim($roleName, '_');
$roleName = strtoupper($roleName);
}
return $roleName;
};
// help the user to figure out the allowed name
$builder->get('name')->addViewTransformer(
new CallbackTransformer(
function ($roleName) {
if (\is_string($roleName)) {
$roleName = str_replace(' ', '_', $roleName);
$roleName = str_replace('-', '_', $roleName);
}
return $roleName;
function ($roleName) use ($replacer) {
return $replacer($roleName);
},
function ($roleName) {
return $roleName;
}
)
);
$builder->get('name')->addModelTransformer(
new CallbackTransformer(
function ($roleName) {
return $roleName;
},
function ($roleName) use ($replacer) {
return $replacer($roleName);
}
)
);
}
public function configureOptions(OptionsResolver $resolver): void