/**
  * @Route("/authorize/callback", name = "app_authorize_callback")
  */
 public function authorizeCallbackAction(Request $request)
 {
     if (!($code = $request->query->get('code'))) {
         throw $this->createNotFoundException();
     }
     $client = $this->get('wechat.oauth.client');
     try {
         $token = $client->getAccessToken($code);
         $user = $client->getUser();
     } catch (\Exception $e) {
         exit(sprintf('获取用户信息失败(%s)', $e->getMessage()));
     }
     $repository = $this->get('doctrine.orm.entity_manager')->getRepository('AppBundle:User');
     if (!($entity = $repository->getByOpenid($user['openid']))) {
         $entity = new \AppBundle\Entity\User();
     }
     $entity->setOpenid($user['openid']);
     $entity->setNickname($user['nickname']);
     $entity->setProvince($user['province']);
     $entity->setCity($user['city']);
     $entity->setGender($user['sex']);
     $entity->setAvatar($user['headimgurl']);
     $entity->setAccessToken($accessToken);
     $repository->doPersist($entity);
     $token = new UsernamePasswordToken($entity, null, 'wechat', $entity->getRoles());
     $tokenStorage = $this->get('security.token_storage');
     $tokenStorage->setToken($token);
     $referer = $this->_getRefererUrl();
     return $this->redirect($referer);
 }
Пример #2
0
 /**
  * @param ObjectManager $manager
  */
 public function load(ObjectManager $manager)
 {
     /** @var \Symfony\Component\Security\Core\Encoder\PasswordEncoderInterface $passwordEncoder */
     $passwordEncoder = $this->container->get('security.password_encoder');
     /** @var \Faker\Generator $fakerGenerator */
     $fakerGenerator = $this->container->get('faker.generator');
     $users = [];
     $user = new \AppBundle\Entity\User();
     $user->setPassword($passwordEncoder->encodePassword($user, $fakerGenerator->slug));
     $user->setEmail($fakerGenerator->email);
     $user->setUsername($fakerGenerator->userName);
     $users[] = $user;
     foreach ($users as $user) {
         $manager->persist($user);
         $this->addReference('user-' . $user->getUsername(), $user);
     }
     $manager->flush();
 }
Пример #3
0
<?php

// php app/scripts/crud_users/create_user.php username=fer2d2 email=fernando.moro@php.net password=unapass roles=ROLE_MANAGER groups=players,admins
require_once __DIR__ . '/../../../config/bootstrap.php';
if ($argc < 2) {
    echo "Usage: " . basename(__FILE__) . " username=value email=value password=value roles=value_1,...,value_n [groups=group_name_1,...,group_name_N enabled=true|false salt=value locked=true|false expired=true|false credentials_expired=true|false]" . PHP_EOL;
    exit;
}
$cmd_data = [];
parse_str(implode('&', array_slice($argv, 1)), $cmd_data);
$username = $cmd_data['username'];
$email = $cmd_data['email'];
$password = password_hash($cmd_data['password'], PASSWORD_DEFAULT);
$roles = explode(',', $cmd_data['roles']);
$groups = explode(',', $cmd_data['groups']);
$enabled = array_key_exists('enabled', $cmd_data) ? filter_var($cmd_data['enabled'], FILTER_VALIDATE_BOOLEAN) : true;
$salt = array_key_exists('salt', $cmd_data) ? $cmd_data['salt'] : 'PLACEHOLDER';
$locked = array_key_exists('locked', $cmd_data) ? filter_var($cmd_data['locked'], FILTER_VALIDATE_BOOLEAN) : false;
$expired = array_key_exists('expired', $cmd_data) ? filter_var($cmd_data['expired'], FILTER_VALIDATE_BOOLEAN) : false;
$credentials_expired = array_key_exists('credentials_expired', $cmd_data) ? filter_var($cmd_data['credentials_expired'], FILTER_VALIDATE_BOOLEAN) : false;
$em = GetEntityManager();
$userRepository = $em->getRepository('AppBundle\\Entity\\User');
$groupRepository = $em->getRepository('AppBundle\\Entity\\Group');
$user = new \AppBundle\Entity\User();
$user->setUsername($username)->setUsernameCanonical(strtolower($username))->setEmail($email)->setEmailCanonical(strtolower($email))->setPassword($password)->setRoles($roles)->setEnabled($enabled)->setSalt($salt)->setLocked($locked)->setExpired($expired)->setCredentialsExpired($credentials_expired);
foreach ($groups as $group) {
    $groupEntity = $groupRepository->findOneBy(["name" => $group]);
    $user->addGroup($groupEntity);
}
$em->persist($user);
$em->flush();