[How to] How to force all particpants input their display name?

Hi, folks:
We got a problem.

When participants join the meeting room,
they can input a blank name or bypass the dialog directory.
(press ‘cancel’ button or click other position in screen)

Then their names are shown in ‘Fellow Jitsiter’, that’s a problem for us.

How to configure Jitsi to force participants to input their display name?

There’s this config:

Even so, there’s nothing stopping someone from setting their name to “Fellow Jitster” or something arbitrary.

If the intent is to enforce reliable user identity in meetings, I would handle user authentication in a separate application, then redirect them to Jitsi with JWT token that contains their user identity (display name, email, avatar, etc). On the JWT side, you’d allow only JWT auth and disable the ability for users to change their display name (1, 2)

1 Like

Hi, shawn:
Thank you for your suggestions.

Our meeting participants include external members that have no identity,
so we only need to force the meeting participant to input display name excludes the default one.

I make a workaround that is able to force participant to input their display name without lobby.

Add some code to app.bundle.min.js

class cse extends Fe.Component {
    constructor(e) {
        super(e),
            this._onSetDisplayName = this._onSetDisplayName.bind(this),
            this._onCancelLogin = this._onCancelLogin.bind(this) /* change the action of cancel button to leave meeting */
    }
    /* #region change the action of cancel button to leave meeting */
    _onCancelLogin() {
        const { dispatch: e } = this.props;
        APP.conference.hangup(e)
    }
    /* #endregion */
    _onSetDisplayName(e) {
        if (!e || !e.trim())
            return !1;
        const { dispatch: t, onPostSubmit: n } = this.props;
        return t(bd({
            displayName: e
        })),
            null == n || n(),
            !0
    }
}
const use = fv(Gt()(class extends cse {
    constructor(e) {
        super(e),
            this.state = {
                displayName: ""
            },
            this._onDisplayNameChange = this._onDisplayNameChange.bind(this),
            this._onSubmit = this._onSubmit.bind(this)
    }
    render() {
        const { displayName: dn } = this.state; /* make ok button disabled when displayname is blank */
        return Fe.createElement(oM, {
            cancel: {
                translationKey: "dialog.Cancel"
            },
            ok: {
                translationKey: "dialog.Ok",
                disabled: dn.trim() === "" /* make ok button disabled when displayname is blank */
            },
            onSubmit: this._onSubmit,
            onCancel: this._onCancelLogin, /* change the action of cancel button to leave meeting */
            titleKey: "dialog.displayNameRequired",
            hideCloseButton: 1, /* remove close button (x) on the upper right side of the dialog */
            disableBackdropClose: 1, /* disable the background clicks to skip the dialog */
            disableAutoHideOnSubmit: 1 /* disable enter key to skip the dialog */
        }