Skip to content

Commit aab040b

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

11 files changed

Lines changed: 541 additions & 201 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 & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@ 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
7-
import com.github.gotify.client.api.VersionApi
89
import com.github.gotify.client.auth.ApiKeyAuth
910
import com.github.gotify.client.auth.HttpBasicAuth
1011

@@ -37,12 +38,20 @@ internal object ClientFactory {
3738
return client
3839
}
3940

40-
fun versionApi(
41+
fun infoApi(
4142
settings: Settings,
4243
sslSettings: SSLSettings = settings.sslSettings(),
4344
baseUrl: String = settings.url
44-
): VersionApi {
45-
return unauthorized(settings, sslSettings, baseUrl).createService(VersionApi::class.java)
45+
): InfoApi {
46+
return unauthorized(settings, sslSettings, baseUrl).createService(InfoApi::class.java)
47+
}
48+
49+
fun oidcApi(
50+
settings: Settings,
51+
sslSettings: SSLSettings = settings.sslSettings(),
52+
baseUrl: String = settings.url
53+
): OidcApi {
54+
return unauthorized(settings, sslSettings, baseUrl).createService(OidcApi::class.java)
4655
}
4756

4857
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)