Azure / Azure/static-web-apps-cli

Auth Emulator - Indicate valid Username characters when invalid character(s) submitted

Ouverte
#269 4 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
priority: low (P2) scope: auth status: need e2e tests type: bug
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

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.