{"id":17797393,"url":"https://github.com/steevanb/user-bundle","last_synced_at":"2025-04-02T03:21:07.651Z","repository":{"id":28240134,"uuid":"117698279","full_name":"steevanb/user-bundle","owner":"steevanb","description":"Simple user bundle for Symfony4","archived":false,"fork":false,"pushed_at":"2021-11-29T16:25:51.000Z","size":12,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-07T18:14:45.133Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/steevanb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-01-16T15:01:44.000Z","updated_at":"2021-11-29T16:25:40.000Z","dependencies_parsed_at":"2022-08-07T13:15:33.331Z","dependency_job_id":null,"html_url":"https://github.com/steevanb/user-bundle","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steevanb%2Fuser-bundle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steevanb%2Fuser-bundle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steevanb%2Fuser-bundle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steevanb%2Fuser-bundle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/steevanb","download_url":"https://codeload.github.com/steevanb/user-bundle/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246747793,"owners_count":20827215,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-27T11:55:37.573Z","updated_at":"2025-04-02T03:21:07.631Z","avatar_url":"https://github.com/steevanb.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![version](https://img.shields.io/badge/version-dev-red.svg)](https://github.com/steevanb/user-bundle)\n\n# Installation\n\n### Add dependency\n\n```bash\ncomposer require steevanb/user-bundle 0.0.*\n# If you want to validate User entity data\ncomposer require symfony/validator symfony/translation\n```\n\n### Add bundle\n\n```php\n# config/bundles.php\nreturn [\n    Symfony\\Bundle\\SecurityBundle\\SecurityBundle::class =\u003e ['all' =\u003e true],\n    steevanb\\\\UserBundle\\UserBundle::class =\u003e ['all' =\u003e true]\n]\n```\n\n### Configure security\n\n```yml\n# config/packages/security.yaml\nsecurity:\n    encoders:\n        App\\Entity\\User:\n            algorithm: bcrypt\n            cost: 12\n    providers:\n        database:\n            entity:\n                class: App\\Entity\\User\n                property: username\n    firewalls:\n        dev:\n            pattern: ^/(_(profiler|wdt)|css|images|js)/\n            security: false\n        main:\n            anonymous: ~\n            provider: database\n            form_login:\n                login_path: login\n                check_path: login\n                default_target_path: index\n                username_parameter: login[username]\n                password_parameter: login[password]\n                csrf_parameter: login[_token]\n            logout:\n                path: logout\n    access_control:\n        - { path: ^/secured-area, roles: ROLE_USER }\n```\n\n### Create User entity\n\nCreate the entity:\n```php\n# src/Entity/User.php\n\nnamespace App\\Entity;\n\nuse steevanb\\UserBundle\\Entity\\AbstractUser;\n\nclass User extends AbstractUser\n{\n}\n\n```\n\nCreate the mapping:\n```yaml\n#config/doctrine/User.orm.yml\n\nApp\\Entity\\User:\n    type: entity\n    table: user\n\n    id:\n        id:\n            type: integer\n            generator: { strategy: AUTO }\n            options: { unsigned: true }\n\n    fields:\n        username:\n            length: 50\n\n        password:\n            length: 64\n\n        email:\n            unique: true\n\n        roles:\n            type: array\n\n        createdAt:\n            type: datetime\n```\n\n### Create SecurityController\n\n```php\n# src/Controller/SecurityController.php\nclass SecurityController extends steevanb\\UserBundle\\Controller\\AbstractSecurityController\n{\n    protected function createUser(): AbstractUser\n    {\n        # Create your User entity\n        return new User();\n    }\n\n    protected function createRegisterForm(): FormInterface\n    {\n        return new RegisterType();\n    }\n\n    protected function createRegisteredResponse(): Response\n    {\n        return new Response('User registered.');\n    }\n}\n```\n\n### Login\n\nAdd route:\n```yml\n# config/routes.yaml\nlogin:\n    path: /login\n    controller: App\\Controller\\SecurityController::login\n```\n\nCreate template:\n```twig\n{# templates/Security/login.html.twig #}\n\n{% if error is not null %}\n    \u003cdiv class=\"alert alert-danger\"\u003e{{ error }}\u003c/div\u003e\n{% endif %}\n\n{{ form(formView) }}\n```\n\n### Logout\n\nAdd route:\n```yml\nlogout:\n    path: /logout\n```\n\n# Enable registration\n\nRegistration is not needed and not enabled by default.\n\nAdd route:\n```yml\n# config/routes.yaml\nregister:\n    path: /register\n    controller: App\\Controller\\SecurityController::register\n```\n\nCreate RegisterType:\n```php\n# src/Form/Type/RegisterType.php\n\nnamespace App\\Form\\Type;\n\nuse steevanb\\UserBundle\\Form\\Type\\AbstractRegisterType;\n\nclass RegisterType extends AbstractRegisterType\n{\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsteevanb%2Fuser-bundle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsteevanb%2Fuser-bundle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsteevanb%2Fuser-bundle/lists"}