mirror of
https://github.com/symfony/recipes-contrib.git
synced 2026-09-11 15:16:55 +03:00
Add softspring user-bundle (#1644)
* Add softspring user-bundle * Fix softspring user-bundle with blank lines * Add postinstall
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
security:
|
||||
# https://symfony.com/doc/current/security.html#registering-the-user-hashing-passwords
|
||||
password_hashers:
|
||||
Symfony\\Component\\Security\\Core\\User\\PasswordAuthenticatedUserInterface: 'auto'
|
||||
# https://symfony.com/doc/current/security.html#loading-the-user-the-user-provider
|
||||
providers:
|
||||
sfs_user:
|
||||
id: sfs_user.user_provider
|
||||
|
||||
access_decision_manager:
|
||||
strategy: unanimous
|
||||
allow_if_all_abstain: false
|
||||
|
||||
role_hierarchy:
|
||||
ROLE_ADMIN:
|
||||
- ROLE_ADMIN_USERS_RW
|
||||
#- ROLE_ADMIN_INVITATION_RO
|
||||
#- ROLE_ALLOWED_TO_SWITCH
|
||||
- ROLE_ADMIN_ADMINISTRATORS_RW
|
||||
ROLE_SUPER_ADMIN:
|
||||
- ROLE_ADMIN
|
||||
- ROLE_ADMIN_ADMINISTRATORS_PROMOTE_SUPER
|
||||
- ROLE_ADMIN_ADMINISTRATORS_DEMOTE_SUPER
|
||||
|
||||
firewalls:
|
||||
dev:
|
||||
pattern: ^/(_(profiler|wdt)|css|images|js)/
|
||||
security: false
|
||||
|
||||
main:
|
||||
pattern: ^/(admin|app)/
|
||||
lazy: true
|
||||
provider: sfs_user
|
||||
form_login:
|
||||
provider: sfs_user
|
||||
login_path: sfs_user_login
|
||||
check_path: sfs_user_login_check
|
||||
|
||||
# login_throttling:
|
||||
# max_attempts: 5
|
||||
# interval: '1 minute'
|
||||
|
||||
# remember_me:
|
||||
# secret: \"%env(APP_SECRET)%\"
|
||||
# lifetime: 2592000 # 1 month
|
||||
# secure: true
|
||||
# httponly: true
|
||||
# always_remember_me: false
|
||||
|
||||
logout:
|
||||
path: sfs_user_logout
|
||||
|
||||
# switch_user:
|
||||
# role: ROLE_ALLOWED_TO_SWITCH
|
||||
# parameter: _switch_user
|
||||
|
||||
access_control:
|
||||
- { path: ^/app/login, roles: PUBLIC_ACCESS }
|
||||
# - { path: ^/app/invitation, roles: PUBLIC_ACCESS }
|
||||
# - { path: ^/app/register, roles: PUBLIC_ACCESS }
|
||||
- { path: ^/app/reset-password, roles: PUBLIC_ACCESS }
|
||||
- { path: ^/admin, roles: ROLE_ADMIN }
|
||||
|
||||
when@test:
|
||||
security:
|
||||
password_hashers:
|
||||
# By default, password hashers are resource intensive and take time. This is
|
||||
# important to generate secure password hashes. In tests however, secure hashes
|
||||
# are not important, waste resources and increase test times. The following
|
||||
# reduces the work factor to the lowest possible values.
|
||||
Symfony\\Component\\Security\\Core\\User\\PasswordAuthenticatedUserInterface:
|
||||
algorithm: auto
|
||||
cost: 4 # Lowest possible value for bcrypt
|
||||
time_cost: 3 # Lowest possible value for argon
|
||||
memory_cost: 10 # Lowest possible value for argon
|
||||
@@ -0,0 +1,29 @@
|
||||
twig:
|
||||
globals:
|
||||
admin_menu:
|
||||
users:
|
||||
translation_key: 'sidebar.menu.users.title'
|
||||
users:
|
||||
translation_key: 'sidebar.menu.users.users'
|
||||
route: 'sfs_user_admin_users_list'
|
||||
role: PERMISSION_SFS_USER_ADMIN_USERS_LIST
|
||||
active_expression: 'sfs_user_admin_users_'
|
||||
icon: 'bi bi-people'
|
||||
administrators:
|
||||
translation_key: 'sidebar.menu.users.administrators'
|
||||
route: 'sfs_user_admin_administrators_list'
|
||||
role: PERMISSION_SFS_USER_ADMIN_ADMINISTRATORS_LIST
|
||||
active_expression: 'sfs_user_admin_administrators_'
|
||||
icon: 'bi bi-people-fill'
|
||||
# history:
|
||||
# translation_key: 'sidebar.menu.users.access_history'
|
||||
# route: 'sfs_user_admin_access_history_list'
|
||||
# role: ROLE_ADMIN_ACCESS_HISTORY_LIST
|
||||
# active_expression: 'sfs_user_admin_access_history_'
|
||||
# icon: 'bi bi-person-lines-fill'
|
||||
# invitations:
|
||||
# translation_key: 'sidebar.menu.users.invitations'
|
||||
# route: 'sfs_user_admin_invitations_list'
|
||||
# role: ROLE_ADMIN_INVITATIONS_LIST
|
||||
# active_expression: 'sfs_user_admin_invitations_'
|
||||
# icon: 'bi bi-person-plus'
|
||||
@@ -0,0 +1,2 @@
|
||||
imports:
|
||||
- { resource: '@SfsUserBundle/config/security/admin_role_hierarchy.yaml' }
|
||||
@@ -0,0 +1,22 @@
|
||||
_sfs_login:
|
||||
resource: '@SfsUserBundle/config/routing/login.yaml'
|
||||
|
||||
#_sfs_invitation:
|
||||
# resource: '@SfsUserBundle/config/routing/invitation.yaml'
|
||||
# prefix: "/invitation"
|
||||
|
||||
_sfs_reset_password:
|
||||
resource: '@SfsUserBundle/config/routing/reset_password.yaml'
|
||||
prefix: "/reset-password"
|
||||
|
||||
_sfs_change_password:
|
||||
resource: '@SfsUserBundle/config/routing/change_password.yaml'
|
||||
prefix: "/user/change-password"
|
||||
|
||||
#_sfs_register:
|
||||
# resource: '@SfsUserBundle/config/routing/register.yaml'
|
||||
# prefix: "/register"
|
||||
|
||||
_sfs_preferences:
|
||||
resource: '@SfsUserBundle/config/routing/preferences.yaml'
|
||||
prefix: "/user/preferences"
|
||||
@@ -0,0 +1,15 @@
|
||||
_sfs_user_admin:
|
||||
resource: "@SfsUserBundle/config/routing/admin_users.yaml"
|
||||
prefix: "/admin/user"
|
||||
|
||||
_sfs_user_admins:
|
||||
resource: "@SfsUserBundle/config/routing/admin_administrators.yaml"
|
||||
prefix: "/admin/admins"
|
||||
|
||||
_sfs_user_invitations:
|
||||
resource: "@SfsUserBundle/config/routing/admin_invitations.yaml"
|
||||
prefix: "/admin/invitations"
|
||||
|
||||
#_sfs_user_history:
|
||||
# resource: "@SfsUserBundle/config/routing/admin_access_history.yaml"
|
||||
# prefix: "/admin/access-history"
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"bundles": {
|
||||
"Softspring\\UserBundle\\SfsUserBundle": ["all"]
|
||||
},
|
||||
"copy-from-recipe": {
|
||||
"config/": "config/",
|
||||
"src/": "src/",
|
||||
"translations/": "translations/"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
* The <fg=green>SfsUserBundle</> is ready to use.
|
||||
* Now you need to make some manually changes:
|
||||
|
||||
Add the config/packages/security.yaml.dist to your yaml file
|
||||
mv config/packages/security.yaml.dist config/packages/security.yaml
|
||||
|
||||
Run doctrine migrations
|
||||
php bin/console doctrine:migrations:diff --namespace=\"DoctrineMigrations\"
|
||||
php bin/console doctrine:migrations:migrate -n
|
||||
|
||||
Create a user
|
||||
php bin/console sfs:user:create username email password
|
||||
|
||||
Promote the user to admin if you want
|
||||
php bin/console sfs:user:promote username
|
||||
@@ -0,0 +1,72 @@
|
||||
<?php
|
||||
|
||||
namespace App\Entity;
|
||||
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use Softspring\UserBundle\Entity\ConfirmableTrait;
|
||||
use Softspring\UserBundle\Entity\NameSurnameTrait;
|
||||
use Softspring\UserBundle\Entity\PasswordRequestTrait;
|
||||
use Softspring\UserBundle\Entity\RolesAdminTrait;
|
||||
use Softspring\UserBundle\Entity\UserHasLocalePreferenceTrait;
|
||||
use Softspring\UserBundle\Entity\UserIdentifierEmailTrait;
|
||||
use Softspring\UserBundle\Entity\UserLastLoginTrait;
|
||||
use Softspring\UserBundle\Entity\UserPasswordTrait;
|
||||
use Softspring\UserBundle\Model\ConfirmableInterface;
|
||||
use Softspring\UserBundle\Model\NameSurnameInterface;
|
||||
use Softspring\UserBundle\Model\PasswordRequestInterface;
|
||||
use Softspring\UserBundle\Model\RolesAdminInterface;
|
||||
use Softspring\UserBundle\Model\User as UserModel;
|
||||
use Softspring\UserBundle\Model\UserAvatarInterface;
|
||||
use Softspring\UserBundle\Model\UserAvatarTrait;
|
||||
use Softspring\UserBundle\Model\UserHasLocalePreferenceInterface;
|
||||
use Softspring\UserBundle\Model\UserIdentifierEmailInterface;
|
||||
use Softspring\UserBundle\Model\UserLastLoginInterface;
|
||||
use Softspring\UserBundle\Model\UserPasswordInterface;
|
||||
|
||||
/**
|
||||
* @ORM\Entity()
|
||||
* @ORM\HasLifecycleCallbacks()
|
||||
*/
|
||||
#[ORM\Entity]
|
||||
#[ORM\HasLifecycleCallbacks]
|
||||
class User extends UserModel implements NameSurnameInterface, UserPasswordInterface, PasswordRequestInterface, UserIdentifierEmailInterface, UserAvatarInterface, ConfirmableInterface, RolesAdminInterface, UserLastLoginInterface, UserHasLocalePreferenceInterface
|
||||
{
|
||||
use UserIdentifierEmailTrait;
|
||||
use NameSurnameTrait;
|
||||
use UserPasswordTrait;
|
||||
use PasswordRequestTrait;
|
||||
use UserAvatarTrait;
|
||||
use ConfirmableTrait;
|
||||
use RolesAdminTrait;
|
||||
use UserLastLoginTrait;
|
||||
use UserHasLocalePreferenceTrait;
|
||||
|
||||
/**
|
||||
* @ORM\Id
|
||||
* @ORM\Column(length=13, options={"fixed": true})
|
||||
* @ORM\GeneratedValue(strategy="NONE")
|
||||
*/
|
||||
#[ORM\Id]
|
||||
#[ORM\Column(length: 13, options: ['fixed' => true])]
|
||||
#[ORM\GeneratedValue(strategy: 'NONE')]
|
||||
protected ?string $id = null;
|
||||
|
||||
public function getId(): ?string
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @ORM\PrePersist()
|
||||
*/
|
||||
#[ORM\PrePersist]
|
||||
public function _generateId(): void
|
||||
{
|
||||
$this->id = uniqid();
|
||||
}
|
||||
|
||||
public function getDisplayName(): string
|
||||
{
|
||||
return $this->getName().' '.$this->getSurname();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
sidebar.menu.users.title: "Users"
|
||||
sidebar.menu.users.users: "Users"
|
||||
sidebar.menu.users.administrators: "Administrators"
|
||||
sidebar.menu.users.invitations: "Invitations"
|
||||
sidebar.menu.mails.title: "Emails"
|
||||
Reference in New Issue
Block a user