mirror of
https://github.com/BrenBroZAYT/gameyfin.git
synced 2026-06-13 16:40:01 +00:00
Bugfix and UX improvement
This commit is contained in:
@@ -42,7 +42,8 @@ function SsoMangementLayout({getConfig, formik}: any) {
|
||||
<ConfigFormField configElement={getConfig("sso.oidc.auto-register-new-users")}
|
||||
isDisabled={!formik.values.sso.oidc.enabled}/>
|
||||
<ConfigFormField configElement={getConfig("sso.oidc.match-existing-users-by")}
|
||||
isDisabled={!formik.values.sso.oidc.enabled}/>
|
||||
isDisabled={!formik.values.sso.oidc.enabled ||
|
||||
!formik.values.sso.oidc["auto-register-new-users"]}/>
|
||||
</div>
|
||||
|
||||
<Section title="SSO provider configuration"/>
|
||||
|
||||
@@ -2,17 +2,24 @@ import React, {useEffect, useState} from "react";
|
||||
import ConfigFormField from "Frontend/components/administration/ConfigFormField";
|
||||
import withConfigPage from "Frontend/components/administration/withConfigPage";
|
||||
import Section from "Frontend/components/general/Section";
|
||||
import {UserEndpoint} from "Frontend/generated/endpoints";
|
||||
import {ConfigController, UserEndpoint} from "Frontend/generated/endpoints";
|
||||
import UserInfoDto from "Frontend/generated/de/grimsi/gameyfin/users/dto/UserInfoDto";
|
||||
import {UserManagementCard} from "Frontend/components/general/UserManagementCard";
|
||||
import {SmallInfoField} from "Frontend/components/general/SmallInfoField";
|
||||
import {Info} from "@phosphor-icons/react";
|
||||
|
||||
function UserManagementLayout({getConfig, formik}: any) {
|
||||
const [users, setUsers] = useState<UserInfoDto[]>([]);
|
||||
const [autoRegisterNewUsers, setAutoRegisterNewUsers] = useState(true);
|
||||
|
||||
useEffect(() => {
|
||||
UserEndpoint.getAllUsers().then(
|
||||
(response) => setUsers(response as UserInfoDto[])
|
||||
);
|
||||
|
||||
ConfigController.getConfig("sso.oidc.auto-register-new-users").then(
|
||||
(response) => setAutoRegisterNewUsers(response === "true")
|
||||
);
|
||||
}, []);
|
||||
|
||||
return (
|
||||
@@ -26,6 +33,10 @@ function UserManagementLayout({getConfig, formik}: any) {
|
||||
</div>
|
||||
|
||||
<Section title="Users"/>
|
||||
{!autoRegisterNewUsers &&
|
||||
<SmallInfoField className="mb-4 text-warning" icon={Info}
|
||||
message="Automatic user registration for SSO users is disabled"/>
|
||||
}
|
||||
<div className="grid grid-cols-300px gap-4">
|
||||
{users.map((user) => <UserManagementCard user={user} key={user.username}/>)}
|
||||
</div>
|
||||
|
||||
@@ -16,6 +16,7 @@ import org.springframework.security.core.userdetails.UserDetails
|
||||
import org.springframework.security.core.userdetails.UserDetailsService
|
||||
import org.springframework.security.core.userdetails.UsernameNotFoundException
|
||||
import org.springframework.security.crypto.password.PasswordEncoder
|
||||
import org.springframework.security.oauth2.core.oidc.user.OidcUser
|
||||
import org.springframework.stereotype.Service
|
||||
import org.springframework.web.multipart.MultipartFile
|
||||
import java.io.InputStream
|
||||
@@ -62,6 +63,15 @@ class UserService(
|
||||
}
|
||||
|
||||
fun getUserInfo(auth: Authentication): UserInfoDto {
|
||||
val principal = auth.principal
|
||||
|
||||
if (principal is OidcUser) {
|
||||
val oidcUser = User(principal)
|
||||
val userInfoDto = toUserInfo(oidcUser)
|
||||
userInfoDto.roles = roleService.extractGrantedAuthorities(principal.authorities).map { it.authority }
|
||||
return userInfoDto
|
||||
}
|
||||
|
||||
val user = userByUsername(auth.name)
|
||||
return toUserInfo(user)
|
||||
}
|
||||
|
||||
@@ -4,5 +4,5 @@ data class UserInfoDto(
|
||||
val username: String,
|
||||
val managedBySso: Boolean,
|
||||
val email: String,
|
||||
val roles: List<String>
|
||||
var roles: List<String>
|
||||
)
|
||||
Reference in New Issue
Block a user