Skip to content

Commit 8f20aaa

Browse files
committed
feat: implement oidc & refactor login activity
1 parent 336262d commit 8f20aaa

11 files changed

Lines changed: 541 additions & 200 deletions

File tree

app/build.gradle.kts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,3 @@ dependencies {
104104

105105
}
106106

107-
configurations {
108-
configureEach {
109-
exclude(group = "androidx.lifecycle", module = "lifecycle-viewmodel-ktx")
110-
}
111-
}

app/src/main/AndroidManifest.xml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,18 @@
4343
android:theme="@style/AppTheme.NoActionBar" />
4444
<activity
4545
android:name=".login.LoginActivity"
46-
android:exported="false"
46+
android:exported="true"
4747
android:label="Login"
48+
android:launchMode="singleTop"
4849
android:theme="@style/AppTheme.NoActionBar.Login"
49-
android:windowSoftInputMode="adjustResize" />
50+
android:windowSoftInputMode="adjustResize">
51+
<intent-filter>
52+
<action android:name="android.intent.action.VIEW" />
53+
<category android:name="android.intent.category.DEFAULT" />
54+
<category android:name="android.intent.category.BROWSABLE" />
55+
<data android:scheme="gotify" android:host="oidc" android:path="/callback" />
56+
</intent-filter>
57+
</activity>
5058
<activity
5159
android:name=".log.LogsActivity"
5260
android:exported="false"

app/src/main/kotlin/com/github/gotify/Settings.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,12 @@ internal class Settings(context: Context) {
4545
var clientCertPassword: String?
4646
get() = sharedPreferences.getString("clientCertPass", null)
4747
set(value) = sharedPreferences.edit { putString("clientCertPass", value) }
48+
var oidcCodeVerifier: String?
49+
get() = sharedPreferences.getString("oidc_code_verifier", null)
50+
set(value) = sharedPreferences.edit { putString("oidc_code_verifier", value) }
51+
var oidcState: String?
52+
get() = sharedPreferences.getString("oidc_state", null)
53+
set(value) = sharedPreferences.edit { putString("oidc_state", value) }
4854

4955
init {
5056
sharedPreferences = context.getSharedPreferences("gotify", Context.MODE_PRIVATE)
@@ -61,6 +67,8 @@ internal class Settings(context: Context) {
6167
caCertPath = null
6268
clientCertPath = null
6369
clientCertPassword = null
70+
oidcCodeVerifier = null
71+
oidcState = null
6472
}
6573

6674
fun setUser(name: String?, admin: Boolean) {

app/src/main/kotlin/com/github/gotify/api/ClientFactory.kt

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package com.github.gotify.api
33
import com.github.gotify.SSLSettings
44
import com.github.gotify.Settings
55
import com.github.gotify.client.ApiClient
6+
import com.github.gotify.client.api.InfoApi
7+
import com.github.gotify.client.api.OidcApi
68
import com.github.gotify.client.api.UserApi
79
import com.github.gotify.client.api.VersionApi
810
import com.github.gotify.client.auth.ApiKeyAuth
@@ -37,12 +39,20 @@ internal object ClientFactory {
3739
return client
3840
}
3941

40-
fun versionApi(
42+
fun infoApi(
4143
settings: Settings,
4244
sslSettings: SSLSettings = settings.sslSettings(),
4345
baseUrl: String = settings.url
44-
): VersionApi {
45-
return unauthorized(settings, sslSettings, baseUrl).createService(VersionApi::class.java)
46+
): InfoApi {
47+
return unauthorized(settings, sslSettings, baseUrl).createService(InfoApi::class.java)
48+
}
49+
50+
fun oidcApi(
51+
settings: Settings,
52+
sslSettings: SSLSettings = settings.sslSettings(),
53+
baseUrl: String = settings.url
54+
): OidcApi {
55+
return unauthorized(settings, sslSettings, baseUrl).createService(OidcApi::class.java)
4656
}
4757

4858
fun userApiWithToken(settings: Settings): UserApi {

app/src/main/kotlin/com/github/gotify/init/InitializationActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ internal class InitializationActivity : AppCompatActivity() {
167167
callback: SuccessCallback<VersionInfo>,
168168
errorCallback: Callback.ErrorCallback
169169
) {
170-
ClientFactory.versionApi(settings)
170+
ClientFactory.infoApi(settings)
171171
.version
172172
.enqueue(Callback.callInUI(this, callback, errorCallback))
173173
}

0 commit comments

Comments
 (0)