populate join-room username if authenticated (temp solution)

This commit is contained in:
Bruno Roesner 2024-10-22 10:24:17 -04:00
parent 80a56e9735
commit 9f0ee05768
4 changed files with 31 additions and 2 deletions

View file

@ -9,9 +9,11 @@ const OAuthCallback: React.FC = () => {
useEffect(() => { useEffect(() => {
const searchParams = new URLSearchParams(location.search); const searchParams = new URLSearchParams(location.search);
const user = searchParams.get('user'); const user = searchParams.get('user');
const username = searchParams.get('username');
if (user) { if (user) {
apiService.saveToken(user); apiService.saveToken(user);
apiService.saveUsername(username || "");
navigate('/'); navigate('/');
} else { } else {
navigate('/login'); navigate('/login');

View file

@ -15,9 +15,11 @@ import LoadingButton from '@mui/lab/LoadingButton';
import LoginContainer from '../../../components/LoginContainer/LoginContainer' import LoginContainer from '../../../components/LoginContainer/LoginContainer'
import ApiService from '../../../services/ApiService'
const JoinRoom: React.FC = () => { const JoinRoom: React.FC = () => {
const [roomName, setRoomName] = useState(''); const [roomName, setRoomName] = useState('');
const [username, setUsername] = useState(''); const [username, setUsername] = useState(ApiService.getUsername());
const [socket, setSocket] = useState<Socket | null>(null); const [socket, setSocket] = useState<Socket | null>(null);
const [isWaitingForTeacher, setIsWaitingForTeacher] = useState(false); const [isWaitingForTeacher, setIsWaitingForTeacher] = useState(false);
const [question, setQuestion] = useState<QuestionType>(); const [question, setQuestion] = useState<QuestionType>();

View file

@ -105,6 +105,30 @@ class ApiService {
} }
} }
public saveUsername(username: string): void {
if (!username || username.length === 0) {
return;
}
const object = {
username: username
}
localStorage.setItem("username", JSON.stringify(object));
}
public getUsername(): string {
const objectStr = localStorage.getItem("username");
if (!objectStr) {
return "";
}
const object = JSON.parse(objectStr)
return object.username;
}
// Route to know if rooms need authentication to join // Route to know if rooms need authentication to join
public async getRoomsRequireAuth(): Promise<any> { public async getRoomsRequireAuth(): Promise<any> {
const url: string = this.constructRequestUrl(`/auth/getRoomsRequireAuth`); const url: string = this.constructRequestUrl(`/auth/getRoomsRequireAuth`);
@ -117,6 +141,7 @@ class ApiService {
} }
public logout(): void { public logout(): void {
localStorage.removeItem("username");
return localStorage.removeItem("jwt"); return localStorage.removeItem("jwt");
} }

View file

@ -44,7 +44,7 @@ class AuthManager{
async login(userInfo,req,res,next){ async login(userInfo,req,res,next){
const tokenToSave = jwt.create(userInfo.email, userInfo._id,userInfo.roles); const tokenToSave = jwt.create(userInfo.email, userInfo._id,userInfo.roles);
res.redirect(`/auth/callback?user=${tokenToSave}`); res.redirect(`/auth/callback?user=${tokenToSave}&username=${userInfo.name}`);
console.info(`L'utilisateur '${userInfo.name}' vient de se connecter`) console.info(`L'utilisateur '${userInfo.name}' vient de se connecter`)
} }