/** * @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); }
/** * @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(); }
<?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();