add validation for login form's server url
This commit is contained in:
@@ -117,6 +117,7 @@
|
||||
"login_form_endpoint_hint": "http://ip-tvého-serveru:port/",
|
||||
"login_form_endpoint_url": "URL adresa serveru",
|
||||
"login_form_err_invalid_email": "Neplatný e-mail",
|
||||
"login_form_err_invalid_url": "Neplatný URL",
|
||||
"login_form_err_leading_whitespace": "Úvodní mezera",
|
||||
"login_form_err_trailing_whitespace": "Koncová mezera",
|
||||
"login_form_failed_get_oauth_server_config": "Chyba přihlášení pomocí OAuth, zkontrolujte adresu URL serveru",
|
||||
|
||||
@@ -117,6 +117,7 @@
|
||||
"login_form_endpoint_hint": "http://din-server-ip:port/",
|
||||
"login_form_endpoint_url": "Server Endpoint URL",
|
||||
"login_form_err_invalid_email": "Ugyldig email",
|
||||
"login_form_err_invalid_url": "Ugyldig URL",
|
||||
"login_form_err_leading_whitespace": "Mellemrum før",
|
||||
"login_form_err_trailing_whitespace": "Mellemrum efter",
|
||||
"login_form_failed_get_oauth_server_config": "Fejl med at logge på med OAuth. Tjek serveres URL",
|
||||
|
||||
@@ -117,6 +117,7 @@
|
||||
"login_form_endpoint_hint": "http://deine-server-ip:port/",
|
||||
"login_form_endpoint_url": "Server URL",
|
||||
"login_form_err_invalid_email": "Ungültige E-Mail",
|
||||
"login_form_err_invalid_url": "Ungültige URL",
|
||||
"login_form_err_leading_whitespace": "Führendes Leerzichen",
|
||||
"login_form_err_trailing_whitespace": "Folgendes Leerzeichen",
|
||||
"login_form_failed_get_oauth_server_config": "Error logging using OAuth, check server URL",
|
||||
|
||||
@@ -117,6 +117,7 @@
|
||||
"login_form_endpoint_hint": "http://your-server-ip:port/",
|
||||
"login_form_endpoint_url": "Server Endpoint URL",
|
||||
"login_form_err_invalid_email": "Invalid Email",
|
||||
"login_form_err_invalid_url": "Invalid URL",
|
||||
"login_form_err_leading_whitespace": "Leading whitespace",
|
||||
"login_form_err_trailing_whitespace": "Trailing whitespace",
|
||||
"login_form_failed_get_oauth_server_config": "Error logging using OAuth, check server URL",
|
||||
|
||||
@@ -117,6 +117,7 @@
|
||||
"login_form_endpoint_hint": "http://tu-ip-de-servidor:puerto/",
|
||||
"login_form_endpoint_url": "URL del servidor",
|
||||
"login_form_err_invalid_email": "Correo electrónico no válido",
|
||||
"login_form_err_invalid_url": "URL no válido",
|
||||
"login_form_err_leading_whitespace": "Espacio en blanco inicial",
|
||||
"login_form_err_trailing_whitespace": "Espacio en blanco al final",
|
||||
"login_form_failed_get_oauth_server_config": "Fallo al iniciar sesión con OAuth. Comprueba la URL del servidor.",
|
||||
|
||||
@@ -117,6 +117,7 @@
|
||||
"login_form_endpoint_hint": "http://palvelimesi-osoite:portti/",
|
||||
"login_form_endpoint_url": "Palvelimen URL",
|
||||
"login_form_err_invalid_email": "Virheellinen sähköpostiosoite",
|
||||
"login_form_err_invalid_url": "Invalid URL",
|
||||
"login_form_err_leading_whitespace": "Alussa välilyönti",
|
||||
"login_form_err_trailing_whitespace": "Lopussa välilyönti",
|
||||
"login_form_failed_get_oauth_server_config": "Error logging using OAuth, check server URL",
|
||||
|
||||
@@ -117,6 +117,7 @@
|
||||
"login_form_endpoint_hint": "http://adresse-ip-serveur:port/",
|
||||
"login_form_endpoint_url": "URL du point d'accès au serveur",
|
||||
"login_form_err_invalid_email": "Email invalide",
|
||||
"login_form_err_invalid_url": "URL invalide",
|
||||
"login_form_err_leading_whitespace": "Espace en début de ligne",
|
||||
"login_form_err_trailing_whitespace": "Espace de fin de ligne",
|
||||
"login_form_failed_get_oauth_server_config": "Error logging using OAuth, check server URL",
|
||||
|
||||
@@ -117,6 +117,7 @@
|
||||
"login_form_endpoint_hint": "http://ip-del-tuo-server:port/",
|
||||
"login_form_endpoint_url": "Server Endpoint URL",
|
||||
"login_form_err_invalid_email": "Email non valida",
|
||||
"login_form_err_invalid_url": "URL non valida",
|
||||
"login_form_err_leading_whitespace": "Whitespace all'inizio ",
|
||||
"login_form_err_trailing_whitespace": "Whitespace alla fine",
|
||||
"login_form_failed_get_oauth_server_config": "Errore di login usando OAuth, controlla l'URL del server",
|
||||
|
||||
@@ -117,6 +117,7 @@
|
||||
"login_form_endpoint_hint": "https://example.com:port/",
|
||||
"login_form_endpoint_url": "サーバーエンドポイントURL",
|
||||
"login_form_err_invalid_email": "メールアドレスが有効じゃないよ",
|
||||
"login_form_err_invalid_url": "Invalid URL",
|
||||
"login_form_err_leading_whitespace": "最初に半角スペースが含まれてるよ",
|
||||
"login_form_err_trailing_whitespace": "最後に半角スペースが含まれてるよ",
|
||||
"login_form_failed_get_oauth_server_config": "Error logging using OAuth, check server URL",
|
||||
|
||||
@@ -114,6 +114,7 @@
|
||||
"login_form_endpoint_hint": "https://your-server-ip:port/",
|
||||
"login_form_endpoint_url": "서버 엔드포인트 URL",
|
||||
"login_form_err_invalid_email": "잘못된 이메일 형식입니다",
|
||||
"login_form_err_invalid_url": "Invalid URL",
|
||||
"login_form_err_leading_whitespace": "이메일 앞에 공백문자가 포함되어 있습니다",
|
||||
"login_form_err_trailing_whitespace": "이메일 뒤에 공백문자가 포함되어 있습니다",
|
||||
"login_form_failed_login": "로그인 오류, 서버 URL, 이메일 및 비밀번호를 확인하세요",
|
||||
|
||||
@@ -80,6 +80,7 @@
|
||||
"login_form_endpoint_hint": "http://jouw-server-ip:port/",
|
||||
"login_form_endpoint_url": "Server URL",
|
||||
"login_form_err_invalid_email": "Ongeldige Email",
|
||||
"login_form_err_invalid_url": "Ongeldige URL",
|
||||
"login_form_err_leading_whitespace": "Spatie aan het begin",
|
||||
"login_form_err_trailing_whitespace": "Spatie aan het eind",
|
||||
"login_form_failed_login": "Fout bij inloggen, controleer server url, email en wachtwoord",
|
||||
|
||||
@@ -117,6 +117,7 @@
|
||||
"login_form_endpoint_hint": "http://ip-twojego-serwera:port/",
|
||||
"login_form_endpoint_url": "URL Serwera",
|
||||
"login_form_err_invalid_email": "Niepoprawny Email",
|
||||
"login_form_err_invalid_url": "Niepoprawny URL",
|
||||
"login_form_err_leading_whitespace": "Białe znaki",
|
||||
"login_form_err_trailing_whitespace": "Białe znaki po przecinku",
|
||||
"login_form_failed_get_oauth_server_config": "Error logging using OAuth, check server URL",
|
||||
|
||||
@@ -77,6 +77,7 @@
|
||||
"login_form_endpoint_hint": "http://your-server-ip:port/",
|
||||
"login_form_endpoint_url": "Server Endpoint URL",
|
||||
"login_form_err_invalid_email": "E-mail inválido",
|
||||
"login_form_err_invalid_url": "URL inválido",
|
||||
"login_form_err_leading_whitespace": "Leading whitespace",
|
||||
"login_form_err_trailing_whitespace": "Trailing whitespace",
|
||||
"login_form_failed_login": "Erro ao fazer login, verifique a url do servidor, e-mail e senha",
|
||||
|
||||
@@ -117,6 +117,7 @@
|
||||
"login_form_endpoint_hint": "http://ip-do-seu-servidor:porta/",
|
||||
"login_form_endpoint_url": "URL do endpoint do servidor",
|
||||
"login_form_err_invalid_email": "Email Inválido",
|
||||
"login_form_err_invalid_url": "URL Inválido",
|
||||
"login_form_err_leading_whitespace": "Espaço em branco no início",
|
||||
"login_form_err_trailing_whitespace": "Espaço em branco no fim",
|
||||
"login_form_failed_get_oauth_server_config": "Error logging using OAuth, check server URL",
|
||||
|
||||
@@ -117,6 +117,7 @@
|
||||
"login_form_endpoint_hint": "http://your-server-ip:port/",
|
||||
"login_form_endpoint_url": "Server Endpoint URL",
|
||||
"login_form_err_invalid_email": "Invalid Email",
|
||||
"login_form_err_invalid_url": "Invalid URL",
|
||||
"login_form_err_leading_whitespace": "Leading whitespace",
|
||||
"login_form_err_trailing_whitespace": "Trailing whitespace",
|
||||
"login_form_failed_get_oauth_server_config": "Error logging using OAuth, check server URL",
|
||||
|
||||
@@ -117,6 +117,7 @@
|
||||
"login_form_endpoint_hint": "http://ip-tvojho-servera:port/",
|
||||
"login_form_endpoint_url": "URL adresa servera",
|
||||
"login_form_err_invalid_email": "Neplatný e-mail",
|
||||
"login_form_err_invalid_url": "Neplatný URL",
|
||||
"login_form_err_leading_whitespace": "Úvodná medzera",
|
||||
"login_form_err_trailing_whitespace": "Koncové medzera",
|
||||
"login_form_failed_get_oauth_server_config": "Chyba prihlásenia pomocou OAuth, skontrolujte adresu URL servera",
|
||||
|
||||
@@ -117,6 +117,7 @@
|
||||
"login_form_endpoint_hint": "http://your-server-ip:port/",
|
||||
"login_form_endpoint_url": "服务器地址",
|
||||
"login_form_err_invalid_email": "请输入正确的邮箱",
|
||||
"login_form_err_invalid_url": "Invalid URL",
|
||||
"login_form_err_leading_whitespace": "前面空格",
|
||||
"login_form_err_trailing_whitespace": "后面空格",
|
||||
"login_form_failed_get_oauth_server_config": "使用 OAuth 时出错,请检查服务器 地址",
|
||||
|
||||
@@ -13,6 +13,7 @@ import 'package:immich_mobile/shared/providers/asset.provider.dart';
|
||||
import 'package:immich_mobile/modules/login/providers/authentication.provider.dart';
|
||||
import 'package:immich_mobile/modules/backup/providers/backup.provider.dart';
|
||||
import 'package:immich_mobile/shared/ui/immich_toast.dart';
|
||||
import 'package:immich_mobile/utils/url_helper.dart';
|
||||
import 'package:openapi/api.dart';
|
||||
|
||||
class LoginForm extends HookConsumerWidget {
|
||||
@@ -215,7 +216,15 @@ class ServerEndpointInput extends StatelessWidget {
|
||||
}) : super(key: key);
|
||||
|
||||
String? _validateInput(String? url) {
|
||||
// Can we do any other validation here instead?
|
||||
if (url == null || url.isEmpty) return null;
|
||||
|
||||
final validate = Uri.tryParse(sanitizeUrl(url));
|
||||
if (validate == null ||
|
||||
!validate.isAbsolute ||
|
||||
!validate.scheme.startsWith("http") ||
|
||||
validate.host.isEmpty) {
|
||||
return 'login_form_err_invalid_url'.tr();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:immich_mobile/utils/url_helper.dart';
|
||||
import 'package:openapi/api.dart';
|
||||
import 'package:http/http.dart';
|
||||
|
||||
@@ -34,13 +35,7 @@ class ApiService {
|
||||
/// port - optional (default: based on schema)
|
||||
/// path - optional
|
||||
Future<String> resolveEndpoint(String serverUrl) async {
|
||||
// Add schema if none is set
|
||||
final urlWithSchema = serverUrl.startsWith(RegExp(r"https?://"))
|
||||
? serverUrl
|
||||
: "https://$serverUrl";
|
||||
|
||||
// Remove trailing slash(es)
|
||||
final url = urlWithSchema.replaceFirst(RegExp(r"/+$"), "");
|
||||
final url = sanitizeUrl(serverUrl);
|
||||
|
||||
// Check for /.well-known/immich
|
||||
final wellKnownEndpoint = await getWellKnownEndpoint(url);
|
||||
|
||||
8
mobile/lib/utils/url_helper.dart
Normal file
8
mobile/lib/utils/url_helper.dart
Normal file
@@ -0,0 +1,8 @@
|
||||
String sanitizeUrl(String url) {
|
||||
// Add schema if none is set
|
||||
final urlWithSchema =
|
||||
url.startsWith(RegExp(r"https?://")) ? url : "https://$url";
|
||||
|
||||
// Remove trailing slash(es)
|
||||
return urlWithSchema.replaceFirst(RegExp(r"/+$"), "");
|
||||
}
|
||||
Reference in New Issue
Block a user