import { useSession, useUserId, useSetting } from '@rocket.chat/ui-contexts';
import RegistrationRoute from '@rocket.chat/web-ui-registration';
import type { ReactElement, ReactNode } from 'react';
import React from 'react';
import LoginPage from './LoginPage';
import UsernameCheck from './UsernameCheck';
/*
* Anonymous and guest are similar in some way
*
* Anonymous is an old feature that allows the user to navigate as an anonymus user
* by default the user dont need to do anything its hadled by the system but by behind the scenes a new * user is registered
*
* Guest is only for certain locations, it shows a form asking if the user wants to stay as guest and if so
* renders the page, without creating an user (not even an anonymous user)
*/
const AuthenticationCheck = ({ children, guest }: { children: ReactNode; guest?: boolean }): ReactElement => {
const uid = useUserId();
const allowAnonymousRead = useSetting('Accounts_AllowAnonymousRead');
const forceLogin = useSession('forceLogin');
if (uid) {
return {children};
}
if (!forceLogin && guest) {
return ;
}
if (!forceLogin && allowAnonymousRead) {
return {children};
}
return ;
};
export default AuthenticationCheck;