Azure / Azure/static-web-apps-cli
Auth Emulator - Indicate valid Username characters when invalid character(s) submitted
- Langage dominant
- TypeScript
- Étoiles
- 668
- Forks
- 155
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
**Is your feature request related to a problem? Please describe.**
Using the Auth Emulator page for GitHub (may be the same for other Identity Providers):
http://localhost:4280/.auth/login/github
If the user enters invalid characters for `Username`, an attempt to submit the form fails "silently" in the UI.
Example value for `Username`:
`یونیکد`
The console gives additional information:
_The string to be encoded contains characters outside of the Latin1 range._
`
Uncaught DOMException: Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.
at saveCookie (http://localhost:4280/.auth/login/github:168:54)
at HTMLFormElement. (http://localhost:4280/.auth/login/github:316:11)
at HTMLFormElement.dispatch (https://ajax.aspnetcdn.com/ajax/jquery/jquery-3.2.1.min.js:3:10316)
at HTMLFormElement.q.handle (https://ajax.aspnetcdn.com/ajax/jquery/jquery-3.2.1.min.js:3:8343)
`
**Describe the solution you'd like**
If it is required that Username characters be in the Latin1 range, add a validation message near the Username field in the UI.
If the full range of Unicode characters is allowed, adjust logic, to allow such characters.
**Describe alternatives you've considered**
Open the DevTools Console while running, to view run-time exceptions
**Additional context**
Exception is thrown in this source code file:
https://github.com/Azure/static-web-apps-cli/blob/main/src/public/auth.html
```Javascript
function saveCookie(formElement) {
const data = localStorage[hashStorageKey(formElement)];
document.cookie = `StaticWebAppsAuthCookie=${btoa(data)}; path=/`;
}
```
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Commencez dans src/public/auth.html, en particulier au niveau de saveCookie et du chemin de soumission du formulaire Username présenté dans l’issue. Reproduisez l’échec avec la valeur Unicode fournie et examinez la validation actuelle du champ ainsi que l’appel à btoa. La tâche est terminée lorsque l’UI n’échoue plus silencieusement : elle explique soit les caractères Username acceptés, soit prend en charge toute la plage prévue par le projet.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- javascript
- Domaine
- authentication, frontend
- Type d'issue
- Fonctionnalité
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100