fix(frontend-config): use guest access level instead of allowAnonymous

Signed-off-by: Erik Michelson <github@erik.michelson.eu>
This commit is contained in:
Erik Michelson 2023-09-24 22:56:31 +02:00
parent 56643ffd85
commit 1207ce7690
4 changed files with 17 additions and 9 deletions

View file

@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
* SPDX-FileCopyrightText: 2023 The HedgeDoc developers (see AUTHORS file)
*
* SPDX-License-Identifier: AGPL-3.0-only
*/
@ -8,8 +8,8 @@ import { HttpMethod } from '../../src/handler-utils/respond-to-matching-request'
declare namespace Cypress {
interface Chainable {
loadConfig(additionalConfig?: Partial<typeof config>): Chainable<Window>,
logIn: Chainable<Window>,
loadConfig(additionalConfig?: Partial<typeof config>): Chainable<Window>
logIn: Chainable<Window>
logOut: Chainable<Window>
}
}
@ -61,8 +61,8 @@ export const authProviders = [
]
export const config = {
allowAnonymous: true,
allowRegister: true,
guestAccess: 'write',
authProviders: authProviders,
branding: branding,
useImageProxy: false,

View file

@ -5,10 +5,10 @@
*/
export interface FrontendConfig {
allowAnonymous: boolean
allowRegister: boolean
authProviders: AuthProvider[]
branding: BrandingConfig
guestAccess: GuestAccessLevel
useImageProxy: boolean
specialUrls: SpecialUrls
version: BackendVersion
@ -16,6 +16,13 @@ export interface FrontendConfig {
maxDocumentLength: number
}
export enum GuestAccessLevel {
DENY = 'deny',
READ = 'read',
WRITE = 'write',
CREATE = 'create'
}
export enum AuthProviderType {
DROPBOX = 'dropbox',
FACEBOOK = 'facebook',

View file

@ -10,16 +10,17 @@ import { NewNoteButton } from '../../common/new-note-button/new-note-button'
import { HistoryButton } from '../../layout/app-bar/app-bar-elements/help-dropdown/history-button'
import { useFrontendConfig } from '../../common/frontend-config-context/use-frontend-config'
import { Trans, useTranslation } from 'react-i18next'
import { GuestAccessLevel } from '../../../api/config/types'
/**
* Renders the card with the options for not logged-in users.
*/
export const GuestCard: React.FC = () => {
const allowAnonymous = useFrontendConfig().allowAnonymous
const guestAccessLevel = useFrontendConfig().guestAccess
useTranslation()
if (!allowAnonymous) {
if (guestAccessLevel === GuestAccessLevel.DENY) {
return null
}

View file

@ -4,7 +4,7 @@
* SPDX-License-Identifier: AGPL-3.0-only
*/
import type { FrontendConfig } from '../../../api/config/types'
import { AuthProviderType } from '../../../api/config/types'
import { AuthProviderType, GuestAccessLevel } from '../../../api/config/types'
import {
HttpMethod,
respondToMatchingRequest,
@ -14,12 +14,12 @@ import { isTestMode } from '../../../utils/test-modes'
import type { NextApiRequest, NextApiResponse } from 'next'
const initialConfig: FrontendConfig = {
allowAnonymous: true,
allowRegister: true,
branding: {
name: 'DEMO Corp',
logo: '/public/img/demo.png'
},
guestAccess: GuestAccessLevel.WRITE,
useImageProxy: false,
specialUrls: {
privacy: 'https://example.com/privacy',