+
+ function createUserCallback($token) {
+ return function($user) use($token) {
+ $tx = $this->accounts->getConnection()->startTransaction();
+
+ if (!($account = $this->accounts->byOAuth("github", $token->access_token, $user->login))) {
+ $account = $this->accounts->createOAuthAccount("github", $token->access_token, $user->login);
+ }
+ $account->updateToken("github", $token->access_token, $token);
+ $owner = $account->updateOwner("github", $user->login, $user);
+
+ $tx->commit();
+
+ $this->session->account = $account->account->get();
+ $this->session->github = (object) $owner->export();
+ };
+ }