Handle non-verifed users on the front

This commit is contained in:
Zoe Roux 2024-03-09 15:40:34 +01:00
parent 44e7323720
commit 92bfbf662b
5 changed files with 44 additions and 10 deletions

View File

@ -13,12 +13,15 @@ LIBRARY_IGNORE_PATTERN=".*/[dD]ownloads?/.*"
# If this is true, new accounts wont have any permissions before you approve them in your admin dashboard.
REQUIRE_ACCOUNT_VERIFICATION=true
# Specify permissions of guest accounts, default is no permissions but you can allow anyone to use your instance without account by doing:
# Specify permissions of guest accounts, default is no permissions.
UNLOGGED_PERMISSIONS=
# but you can allow anyone to use your instance without account by doing:
# UNLOGGED_PERMISSIONS=overall.read,overall.play
# You can specify this to allow guests users to see your collection without behing able to play videos for example:
# UNLOGGED_PERMISSIONS=overall.read
# Specify permissions of new accounts.
# DEFAULT_PERMISSIONS=overall.read,overall.play
DEFAULT_PERMISSIONS=overall.read,overall.play
# Hardware transcoding (equivalent of --profile docker compose option).
COMPOSE_PROFILES= # vaapi or qsv or nvidia
@ -40,8 +43,8 @@ PUBLIC_URL=http://localhost:5000
# Use a builtin oidc service (google or discord):
# When you create a client_id, secret combo you may be asked for a redirect url. You need to specify https://YOUR-PUBLIC-URL/api/auth/logged/YOUR-SERVICE-NAME
# OIDC_DISCORD_CLIENTID=
# OIDC_DISCORD_SECRET=
OIDC_DISCORD_CLIENTID=
OIDC_DISCORD_SECRET=
# Or add your custom one:
OIDC_SERVICE_NAME=YourPrettyName
OIDC_SERVICE_LOGO=https://url-of-your-logo.com

View File

@ -68,7 +68,7 @@ namespace Kyoo.Core
builder.RegisterRepository<EpisodeRepository>();
builder.RegisterRepository<PeopleRepository>();
builder.RegisterRepository<StudioRepository>();
builder.RegisterRepository<UserRepository>();
builder.RegisterRepository<UserRepository>().As<IUserRepository>();
builder.RegisterRepository<NewsRepository>();
builder
.RegisterType<WatchStatusRepository>()

View File

@ -30,6 +30,7 @@ import { SettingsContainer } from "../settings/base";
import UserI from "@material-symbols/svg-400/rounded/account_circle.svg";
import Delete from "@material-symbols/svg-400/rounded/delete.svg";
import MoreVert from "@material-symbols/svg-400/rounded/more_vert.svg";
import Unverifed from "@material-symbols/svg-400/rounded/gpp_bad.svg";
import Admin from "@material-symbols/svg-400/rounded/shield_person.svg";
import { useMutation, useQueryClient } from "@tanstack/react-query";
@ -39,8 +40,15 @@ export const UserGrid = ({
username,
avatar,
isAdmin,
isVerifed,
...props
}: WithLoading<{ id: string; username: string; avatar: string; isAdmin: boolean }>) => {
}: WithLoading<{
id: string;
username: string;
avatar: string;
isAdmin: boolean;
isVerifed: boolean;
}>) => {
const { css } = useYoshiki();
const { t } = useTranslation();
const queryClient = useQueryClient();
@ -59,17 +67,35 @@ export const UserGrid = ({
<Avatar src={avatar} alt={username} placeholder={username} size={UserGrid.layout.size} fill />
<View {...css({ flexDirection: "row" })}>
<Icon
icon={isAdmin ? Admin : UserI}
icon={isVerifed ? Unverifed : isAdmin ? Admin : UserI}
{...css({
alignSelf: "center",
m: ts(1),
})}
{...tooltip(t(isAdmin ? "admin.users.adminUser" : "admin.users.regularUser"))}
{...tooltip(
t(
isVerifed
? "admin.users.unverifed"
: isAdmin
? "admin.users.adminUser"
: "admin.users.regularUser",
),
)}
/>
<Skeleton>
<P>{username}</P>
</Skeleton>
<Menu Trigger={IconButton} icon={MoreVert} {...tooltip(t("misc.more"))}>
{!isVerifed && (
<Menu.Item
label={t("admin.users.verify")}
onSelect={() =>
mutateAsync({
permissions: ["overall.read", "overall.play"],
})
}
/>
)}
<Menu.Sub label={t("admin.users.set-permissions")} icon={Admin}>
<Menu.Item
selected={!isAdmin}
@ -151,6 +177,7 @@ export const UserList = () => {
username={user.username}
avatar={user.logo}
isAdmin={user.permissions?.includes("admin.write")}
isVerified={user.permissions?.length == 0}
/>
)}
</InfiniteFetch>

View File

@ -228,7 +228,9 @@
"adminUser": "Admin",
"regularUser": "User",
"set-permissions": "Set permissions",
"delete": "Delete user"
"delete": "Delete user",
"unverifed": "Unverifed",
"verify": "Verify user"
},
"scanner": {
"label": "Scanner",

View File

@ -228,7 +228,9 @@
"adminUser": "Admin",
"regularUser": "Utilisateur",
"set-permissions": "Definir les permissions",
"delete": "Supprimer l'utilisateur"
"delete": "Supprimer l'utilisateur",
"unverifed": "Non vérifié",
"verify": "Vérifié l'utilisateur"
},
"scanner": {
"label": "Scanner",