2

I need to authenticate via Android on my website (Zend Framework2+ZfcUser+ZfcUserDoctrineORM). I want to call an url that authenticate me and return a json object that contains my session_id. I don't know if it is the correct way but whatever i don't know how to do that with zfcUser.

David

Next, i will be able to store this session_id into Shared Preferences storage.

booradleys
  • 21
  • 4

1 Answers1

0

First of all sorry for my English. In my application i need almost the same. Ok. So in yoursite.com/module/YourModuleName/Module.php do: use YourModuleName\Model\YourModuleName;

use YourModuleName\Model\YourModuleName;
class Module {
public function onBootstrap(MvcEvent $e) {
        $app = $e->getApplication();
        $em  = $app->getEventManager();
        $sm  = $app->getServiceManager();
        $auth = $sm->get('zfcuser_auth_service');

        $model = new OrdersManager();

        if (!$auth->hasIdentity()) {
            $em->attach(MvcEvent::EVENT_ROUTE, function($e) use ($app, $sm, $auth, $model) {
                $match = $e->getRouteMatch();

                // No route, this is a 404
                if (!$match instanceof RouteMatch) {
                    return;
                }

                $match = $e->getRouteMatch();
                $matchParams = $match->getParams();
                // $matchParams['hash'] == some url param
                if (isset($matchParams['hash'])) {

                    $model->setDbAdapterColibo($sm->get('dbAdapter'));
                    $usersSqlObject = $model->getUsers();

                    $salt = md5('caw');

                    foreach ($usersSqlObject as $key => $user) {
                        $hash = hash('sha256', $salt.$param1.$user['user_id']);
                        if ($hash == $matchParams['hash']) {
                            $authAdapter = $sm->get('ZfcUser\Authentication\Adapter\AdapterChain');
                            $request = $app->getRequest();
                            $request->getPost()->set('identity', $user['email']);
                            // You may use user password to auth user
                            $request->getPost()->set('credential', $user['user_id']);
                            $result = $authAdapter->prepareForAuthentication($request);
                            $auth->authenticate($authAdapter);

                            // do your staff with session or other. 
                            // after this you will be redirect to page from where query was

                            break;
                        }
                    }
                }
            });
        }

    }
}

Don`t forget about yoursite.com/module/YourModuleName/config/module.config.php You need to add route with your URL param, to receive it in $matchParams = $match->getParams(); In case I have describe you will be auth and immediately redirect to the site. Example: http://example.com/someController/someAction/param1/param2/hash... the result will be auth and open page http://example.com/someController/someAction/param1/param2/hash...

Ok. This is what i need for my app. Hope this help.

P.S. Some ideas get from Zend Framework 2 - Global check for authentication with ZFCUser

Community
  • 1
  • 1