Я использую fosUserBundle в Symfony 3. Я хочу зарегистрировать нового пользователя без использования страницы регистрации (http://localhost:8000/register
), а не с помощью метода REST. Я использую Angular для внешнего приложения, поэтому там будет создана страница регистрации.
Мне удалось зарегистрировать нового пользователя с помощью этого метода:
/**
* @Route("/subscribe", name="createUserby")
*/
public function subscribe(Request $request)
{
$usermane = $request->query->get('username');
$password = $request->query->get('password');
$email = $request->query->get('email');
$userManager = $this->get('fos_user.user_manager');
$entityManager = $this->get('doctrine')->getManager();
$data = $request->request->all();
$user = $userManager->createUser();
$user->setUsername($usermane);
$user->setPlainPassword($password);
$user->setEmail($email);
$userManager->updateUser($user);
$response = array('code'=>1,'message'=>'user '.$usermane.' created');
return new JsonResponse($response);
}
Если я использую страницу регистрации (http://localhost:8000/register
), я успешно получаю письмо с подтверждением, но когда я использую вышеуказанный метод, я не получаю.
Это мой security.yml
код:
security:
encoders:
FOS\UserBundle\Model\UserInterface: bcrypt
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
fos_userbundle:
id: fos_user.user_provider.username_email
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
api_doc:
pattern: ^/api/doc
security: false
login:
pattern: ^/api/login
stateless: true
anonymous: true
form_login:
check_path: /api/login_check
username_parameter: username
password_parameter: password
success_handler: lexik_jwt_authentication.handler.authentication_success
failure_handler: lexik_jwt_authentication.handler.authentication_failure
require_previous_session: false
api:
pattern: ^/api
stateless: true
provider: fos_userbundle
guard:
authenticators:
- lexik_jwt_authentication.jwt_token_authenticator
main:
pattern: ^/
user_checker: security.user_checker
form_login:
provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager
logout: true
anonymous: true
logout_on_user_change: true
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, role: ROLE_ADMIN }
Конфигурация fos_user
в config.yml
коде:
fos_user:
db_driver: orm # other valid values are 'mongodb' and 'couchdb'
firewall_name: main
user_class: AppBundle\Entity\User
from_email:
address: "%mailer_user%"
sender_name: "%mailer_user%"
registration:
confirmation:
enabled: true
Есть идеи, почему это не работает?