Package com.appspot.plucial.controller.user.ajax

Source Code of com.appspot.plucial.controller.user.ajax.UserDeleteController

package com.appspot.plucial.controller.user.ajax;

import java.io.IOException;

import org.slim3.controller.Navigation;

import com.appspot.plucial.controller.user.UserBaseController;
import com.appspot.plucial.model.UserModel;
import com.appspot.plucial.service.UserService;
import com.google.api.client.http.GenericUrl;

public class UserDeleteController extends UserBaseController {

    /**
     * 「POST /api/disconnect」で公開します。
     *
     * Google+ プラットフォームの利用規約に基づき、このエンドポイントは以下の処理を行います。
     *
     *   1. アプリに格納されている、Google から取得したすべてのデータを削除する。
     *   2. このアプリに対して発行されたすべてのトークンを無効にする。
     *
     * リクエストのペイロードを受け取らず、現在セッションによって識別されているユーザー
     * の接続を解除します。
     *
     * 接続されていたユーザーを表す次の JSON
     * 応答を返します:
     *
     *   「Successfully disconnected.」(正常に接続解除しました。)
     *
     * 以下のエラーを、対応する HTTP 応答コードと共に生成します:
     * 401: 「Unauthorized request」(未承認の要求)  接続解除の対象となる接続済みのユーザーはいませんでした。
     * 500: 「Failed to revoke token for given user: 」(特定ユーザーのトークンを無効にできませんでした)
     *      + エンドポイントを無効にするための失敗した接続からのエラー。
     *
     * @see javax.servlet.http.HttpServlet#doPost(
     *     javax.servlet.http.HttpServletRequest,
     *     javax.servlet.http.HttpServletResponse)
     */
    @Override
    protected Navigation execute(UserModel userModel) throws Exception {

        // データの全削除
        UserService.delete(userModel);

        try {
            revokeToken(userModel);
        } catch (Exception e) {
            e.printStackTrace();
            throw e;
        }

        return null;
    }

    /**
     * 特定のアクセス トークンを無効にして、結果的にその他すべてのアクセス トークンを無効にし、
     * このユーザーについてこのアプリに対して発行されたトークンを更新します。
     *
     * この操作は基本的にユーザーをアプリから接続解除しますが、アプリのアクティビティは
     * Google 内で有効状態が維持されます。  したがって、同一のユーザーが後でアプリに戻り、
     * ログイン、再同意して、アプリの使用を再開できます。
     * @throws IOException 要求の最中にネットワーク エラーが発生しました。
     */
    protected static void revokeToken(UserModel userModel) throws Exception {
      TRANSPORT.createRequestFactory().buildGetRequest(new GenericUrl(
          String.format("https://accounts.google.com/o/oauth2/revoke?token=%s",userModel.getAccessToken()))).execute();
    }
}
TOP

Related Classes of com.appspot.plucial.controller.user.ajax.UserDeleteController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.