mirror of
https://github.com/owncast/owncast.git
synced 2024-11-21 12:18:02 +03:00
fix(admin): sanitize fediverse username (#3437)
* test: add config federation test * fix: santize fediverse username fixes #3424 * refactor: remove commented code * refactor: change username const to usernameValue * refactor: use shorthand property * build: move stories page out of build directory * fix: allow only alphanumeric chars in username * fix: filter out special chars in username Added a regex filter to strip non-alphanumeric chars in username field. * chore: clean unused fields
This commit is contained in:
parent
74e9509844
commit
b694be1052
3 changed files with 30 additions and 4 deletions
|
@ -112,6 +112,17 @@ const ConfigFederation = () => {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const handleUsernameChange = ({ fieldName, value }: UpdateArgs) => {
|
||||||
|
handleFieldChange({
|
||||||
|
fieldName,
|
||||||
|
value,
|
||||||
|
});
|
||||||
|
setFormDataValues({
|
||||||
|
...formDataValues,
|
||||||
|
username: value.replace(/\W/g, ''),
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
const handleEnabledSwitchChange = (value: boolean) => {
|
const handleEnabledSwitchChange = (value: boolean) => {
|
||||||
if (!value) {
|
if (!value) {
|
||||||
setFormDataValues({
|
setFormDataValues({
|
||||||
|
@ -304,7 +315,7 @@ const ConfigFederation = () => {
|
||||||
{...TEXTFIELD_PROPS_FEDERATION_DEFAULT_USER}
|
{...TEXTFIELD_PROPS_FEDERATION_DEFAULT_USER}
|
||||||
value={formDataValues.username}
|
value={formDataValues.username}
|
||||||
initialValue={username}
|
initialValue={username}
|
||||||
onChange={handleFieldChange}
|
onChange={handleUsernameChange}
|
||||||
disabled={!enabled}
|
disabled={!enabled}
|
||||||
/>
|
/>
|
||||||
<TextFieldWithSubmit
|
<TextFieldWithSubmit
|
||||||
|
|
16
web/stories/config-federation.stories.tsx
Normal file
16
web/stories/config-federation.stories.tsx
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
import { Meta } from '@storybook/react';
|
||||||
|
import ConfigFederation from '../pages/admin/config-federation';
|
||||||
|
|
||||||
|
const meta = {
|
||||||
|
title: 'owncast/Admin/Config/Federation',
|
||||||
|
component: ConfigFederation,
|
||||||
|
parameters: {},
|
||||||
|
} satisfies Meta<typeof ConfigFederation>;
|
||||||
|
|
||||||
|
export default meta;
|
||||||
|
|
||||||
|
const Template = arguments_ => <ConfigFederation {...arguments_} />;
|
||||||
|
|
||||||
|
export const Default = Template.bind({});
|
||||||
|
|
||||||
|
Default.args = {};
|
|
@ -65,8 +65,7 @@ export async function postConfigUpdateToAPI(args: ApiPostArgs) {
|
||||||
} else if (onError) {
|
} else if (onError) {
|
||||||
onError(result.message);
|
onError(result.message);
|
||||||
}
|
}
|
||||||
}
|
} catch (e) {
|
||||||
catch (e) {
|
|
||||||
if (onError) {
|
if (onError) {
|
||||||
onError(e.message);
|
onError(e.message);
|
||||||
}
|
}
|
||||||
|
@ -331,7 +330,7 @@ export const TEXTFIELD_PROPS_FEDERATION_DEFAULT_USER = {
|
||||||
placeholder: 'owncast',
|
placeholder: 'owncast',
|
||||||
default: 'owncast',
|
default: 'owncast',
|
||||||
label: 'Username',
|
label: 'Username',
|
||||||
tip: 'The username used for sending and receiving activities from the Fediverse. For example, if you use "bob" as a username you would send messages to the fediverse from @bob@yourserver. Once people start following your instance you should not change this.',
|
tip: 'The username used for sending and receiving activities from the Fediverse. For example, if you use "bob" as a username you would send messages to the fediverse from @bob@yourserver. Once people start following your instance you should not change this.\nNote: Username cannot have special characters. ',
|
||||||
};
|
};
|
||||||
|
|
||||||
export const TEXTFIELD_PROPS_FEDERATION_INSTANCE_URL = {
|
export const TEXTFIELD_PROPS_FEDERATION_INSTANCE_URL = {
|
||||||
|
|
Loading…
Reference in a new issue