add validation for login form's server url
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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