From 978d225d171879063f8b2deb0dd9edc3dad13da6 Mon Sep 17 00:00:00 2001 From: AKIRA TAKEDA Date: Mon, 28 Mar 2022 09:57:02 +0900 Subject: [PATCH 1/3] =?UTF-8?q?=E3=83=AD=E3=82=B0=E3=82=A2=E3=82=A6?= =?UTF-8?q?=E3=83=88API=E8=BF=BD=E5=8A=A0=E5=AF=BE=E5=BF=9C=20=E4=BB=AE?= =?UTF-8?q?=E5=AE=9F=E8=A3=85=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../agileworks/view/ui/documentweb/DocumentWebFragment.kt | 5 +++++ .../java/jp/atled/agileworks/view/ui/login/LoginUtil.kt | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/app/src/main/java/jp/atled/agileworks/view/ui/documentweb/DocumentWebFragment.kt b/app/src/main/java/jp/atled/agileworks/view/ui/documentweb/DocumentWebFragment.kt index 5f340dfa..2f55b8e1 100644 --- a/app/src/main/java/jp/atled/agileworks/view/ui/documentweb/DocumentWebFragment.kt +++ b/app/src/main/java/jp/atled/agileworks/view/ui/documentweb/DocumentWebFragment.kt @@ -292,6 +292,11 @@ class DocumentWebFragment : Fragment(), DocumentWebPresenter { response!!.session_id?.apply { sessionId = response!!.session_id setCookie("https://${uri.host}", "JSESSIONID=${sessionId}; Path=/AgileWorks; HttpOnly;Secure;SameSite=None") + // ToDo ログアウトAPI追加対応 セッションIDを保存 + AwApp.instance.applicationContext.getSharedPreferences("cookie", Context.MODE_PRIVATE) + .edit() + .putString("sessionId", sessionId) + .apply() } if (urlLoading) { webview?.let { diff --git a/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginUtil.kt b/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginUtil.kt index 9df090fd..c99affb6 100644 --- a/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginUtil.kt +++ b/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginUtil.kt @@ -1,6 +1,9 @@ package jp.atled.agileworks.view.ui.login import android.app.Activity +import android.content.Context +import android.util.Log +import jp.atled.agileworks.AwApp import jp.atled.agileworks.model.AuthStateRepository import jp.atled.agileworks.model.NotificationRepository @@ -15,9 +18,14 @@ object LoginUtil { } fun logout(activity: Activity) { + // ToDo ログアウトAPI追加対応 保存しているセッションIDを取得 + val cookiePref = AwApp.instance.applicationContext.getSharedPreferences("cookie", Context.MODE_PRIVATE) + val sessionId = cookiePref.getString("sessionId", "") ?: "" + Log.d("AgileWorks debug", "get sessionId: $sessionId") clearAuthStateAndNotificationToken { activity.finish() LoginActivity.start(activity.applicationContext) + cookiePref.edit().clear().apply() } } -- GitLab From 339a494853511a361d090e75e82e8419f76bc5da Mon Sep 17 00:00:00 2001 From: AKIRA TAKEDA Date: Tue, 29 Mar 2022 13:36:57 +0900 Subject: [PATCH 2/3] =?UTF-8?q?=E3=83=AD=E3=82=B0=E3=82=A2=E3=82=A6?= =?UTF-8?q?=E3=83=88API=E8=BF=BD=E5=8A=A0=20=E5=AE=9F=E8=A3=85=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../agileworks/model/LogoutRepository.kt | 18 +++++++++++ .../model/NotificationRepository.kt | 4 ++- .../atled/agileworks/model/api/ApiClient.kt | 32 +++++++++++++++---- .../atled/agileworks/model/api/ApiService.kt | 4 +++ .../ui/documentweb/DocumentWebFragment.kt | 2 +- .../agileworks/view/ui/login/LoginUtil.kt | 8 ----- 6 files changed, 52 insertions(+), 16 deletions(-) create mode 100644 app/src/main/java/jp/atled/agileworks/model/LogoutRepository.kt diff --git a/app/src/main/java/jp/atled/agileworks/model/LogoutRepository.kt b/app/src/main/java/jp/atled/agileworks/model/LogoutRepository.kt new file mode 100644 index 00000000..e48fcba0 --- /dev/null +++ b/app/src/main/java/jp/atled/agileworks/model/LogoutRepository.kt @@ -0,0 +1,18 @@ +package jp.atled.agileworks.model + +import jp.atled.agileworks.model.api.ApiCallbackCommon +import jp.atled.agileworks.model.api.ApiClient + +class LogoutRepository() { + fun getLogout(onResult: (isSuccess: Boolean) -> Unit) { + ApiClient.instanceLogout.getLogout().enqueue(ApiCallbackCommon(null) { isSuccess, _ -> + onResult( + isSuccess + ) + }) + } + + companion object { + fun getInstance() = LogoutRepository() + } +} \ No newline at end of file diff --git a/app/src/main/java/jp/atled/agileworks/model/NotificationRepository.kt b/app/src/main/java/jp/atled/agileworks/model/NotificationRepository.kt index 3d4a98dc..9dfd8788 100644 --- a/app/src/main/java/jp/atled/agileworks/model/NotificationRepository.kt +++ b/app/src/main/java/jp/atled/agileworks/model/NotificationRepository.kt @@ -4,6 +4,7 @@ import android.app.Activity import android.content.Context import android.util.Log import jp.atled.agileworks.AwApp +import jp.atled.agileworks.model.api.ApiClient /** * 通知全般を扱うリポジトリ @@ -18,7 +19,8 @@ class NotificationRepository { fun clearToken(onResult: (Boolean) -> Unit) { Log.d("AgileWorks", "firebase token clean") - DeviceInfoRepository().removeDeviceInfo { + ApiClient.reCreateLogout() + LogoutRepository.getInstance().getLogout { FcmRepository().removeFcmToken { Log.d("AgileWorks", "firebase token clean -> ${successOrFailured(it)}") onResult(it) diff --git a/app/src/main/java/jp/atled/agileworks/model/api/ApiClient.kt b/app/src/main/java/jp/atled/agileworks/model/api/ApiClient.kt index b50b5f77..b4ecb968 100644 --- a/app/src/main/java/jp/atled/agileworks/model/api/ApiClient.kt +++ b/app/src/main/java/jp/atled/agileworks/model/api/ApiClient.kt @@ -18,11 +18,15 @@ import java.util.concurrent.TimeUnit object ApiClient { - var instance: ApiService = createRetofitInstance() + var instance: ApiService = createRetrofitInstance(false) fun reCreate() { - instance = createRetofitInstance() + instance = createRetrofitInstance(false) } - private fun createRetofitInstance(): ApiService { + var instanceLogout: ApiService = createRetrofitInstance(true) + fun reCreateLogout() { + instanceLogout = createRetrofitInstance(true) + } + private fun createRetrofitInstance(isLogout: Boolean): ApiService { return Retrofit.Builder().run { val moshi = Moshi.Builder() .add(com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory()) @@ -30,7 +34,7 @@ object ApiClient { baseUrl(AwApp.Baseurl()) addConverterFactory(MoshiConverterFactory.create(moshi)) - client(createRequestInterceptorClient()) + client(createRequestInterceptorClient(isLogout)) build() }.create(ApiService::class.java) @@ -131,14 +135,30 @@ object ApiClient { } } - private fun createRequestInterceptorClient(): OkHttpClient { - val interceptor = Interceptor { chain -> + private fun createRequestInterceptorClient(isLogout: Boolean): OkHttpClient { + var interceptor = Interceptor { chain -> val original = chain.request() val requestBuilder = original.newBuilder() val request = requestBuilder.build() chain.proceed(request) } + if (isLogout) { + // 保存しているセッションIDを取得 + val cookiePref = AwApp.instance.applicationContext.getSharedPreferences("cookie", Context.MODE_PRIVATE) + val sessionId = cookiePref.getString("sessionId", "") ?: "" + interceptor = Interceptor { chain -> + val original = chain.request() + val requestBuilder = original.newBuilder() + val request = requestBuilder + .addHeader("Cookie", "JSESSIONID=$sessionId") + .build() + chain.proceed(request) + } + // 保存している情報削除 + cookiePref.edit().clear().apply() + } + return if (DEBUG) { OkHttpClient.Builder() .addInterceptor(interceptor) diff --git a/app/src/main/java/jp/atled/agileworks/model/api/ApiService.kt b/app/src/main/java/jp/atled/agileworks/model/api/ApiService.kt index 11077cda..22c280b4 100644 --- a/app/src/main/java/jp/atled/agileworks/model/api/ApiService.kt +++ b/app/src/main/java/jp/atled/agileworks/model/api/ApiService.kt @@ -40,6 +40,10 @@ interface ApiService { @GET("Broker/MobileAppApi/Session") fun getSession(): Call + // ログアウトAPI + @GET("Broker/MobileAppApi/Logout") + fun getLogout(): Call + @FormUrlEncoded @POST("oauth2") fun refreshToken( diff --git a/app/src/main/java/jp/atled/agileworks/view/ui/documentweb/DocumentWebFragment.kt b/app/src/main/java/jp/atled/agileworks/view/ui/documentweb/DocumentWebFragment.kt index 2f55b8e1..63f8a950 100644 --- a/app/src/main/java/jp/atled/agileworks/view/ui/documentweb/DocumentWebFragment.kt +++ b/app/src/main/java/jp/atled/agileworks/view/ui/documentweb/DocumentWebFragment.kt @@ -292,7 +292,7 @@ class DocumentWebFragment : Fragment(), DocumentWebPresenter { response!!.session_id?.apply { sessionId = response!!.session_id setCookie("https://${uri.host}", "JSESSIONID=${sessionId}; Path=/AgileWorks; HttpOnly;Secure;SameSite=None") - // ToDo ログアウトAPI追加対応 セッションIDを保存 + // セッションID保存 AwApp.instance.applicationContext.getSharedPreferences("cookie", Context.MODE_PRIVATE) .edit() .putString("sessionId", sessionId) diff --git a/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginUtil.kt b/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginUtil.kt index c99affb6..9df090fd 100644 --- a/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginUtil.kt +++ b/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginUtil.kt @@ -1,9 +1,6 @@ package jp.atled.agileworks.view.ui.login import android.app.Activity -import android.content.Context -import android.util.Log -import jp.atled.agileworks.AwApp import jp.atled.agileworks.model.AuthStateRepository import jp.atled.agileworks.model.NotificationRepository @@ -18,14 +15,9 @@ object LoginUtil { } fun logout(activity: Activity) { - // ToDo ログアウトAPI追加対応 保存しているセッションIDを取得 - val cookiePref = AwApp.instance.applicationContext.getSharedPreferences("cookie", Context.MODE_PRIVATE) - val sessionId = cookiePref.getString("sessionId", "") ?: "" - Log.d("AgileWorks debug", "get sessionId: $sessionId") clearAuthStateAndNotificationToken { activity.finish() LoginActivity.start(activity.applicationContext) - cookiePref.edit().clear().apply() } } -- GitLab From f22be003df3698830997095e1e7882c7a9620735 Mon Sep 17 00:00:00 2001 From: AKIRA TAKEDA Date: Tue, 29 Mar 2022 17:14:47 +0900 Subject: [PATCH 3/3] =?UTF-8?q?=E3=82=B3=E3=83=BC=E3=83=89=E3=83=AA?= =?UTF-8?q?=E3=83=95=E3=82=A1=E3=82=AF=E3=82=BF=E3=83=AA=E3=83=B3=E3=82=B0?= =?UTF-8?q?=20=E3=83=AD=E3=82=B0=E3=82=A2=E3=82=A6=E3=83=88API=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0=E5=AE=9F=E8=A3=85=E5=AE=8C=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/jp/atled/agileworks/model/LogoutRepository.kt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/src/main/java/jp/atled/agileworks/model/LogoutRepository.kt b/app/src/main/java/jp/atled/agileworks/model/LogoutRepository.kt index e48fcba0..590cb6f4 100644 --- a/app/src/main/java/jp/atled/agileworks/model/LogoutRepository.kt +++ b/app/src/main/java/jp/atled/agileworks/model/LogoutRepository.kt @@ -6,9 +6,7 @@ import jp.atled.agileworks.model.api.ApiClient class LogoutRepository() { fun getLogout(onResult: (isSuccess: Boolean) -> Unit) { ApiClient.instanceLogout.getLogout().enqueue(ApiCallbackCommon(null) { isSuccess, _ -> - onResult( - isSuccess - ) + onResult(isSuccess) }) } -- GitLab