Ensure you don't share with yourself

This commit is contained in:
Max Berger
2026-03-11 21:44:04 +01:00
parent 434de50281
commit 93075cb20e
3 changed files with 56 additions and 2 deletions

View File

@@ -22,7 +22,7 @@
import { Share, add_share_by_map, add_share_by_token, get_property_key, update_share_by_map, update_share_by_token } from "../api/sharing.js";
import { CollectionType } from "../models/collection.js";
import { ErrorHandler } from "../utils/error.js";
import { FormValidator, validate_href, validate_non_empty } from "../utils/form_validator.js";
import { FormValidator, validate_href, validate_not_empty_or_equals } from "../utils/form_validator.js";
import { onCleanHREFinput, random_uuid } from "../utils/misc.js";
import { Scene, pop_scene, scene_stack } from "./scene_manager.js";
@@ -64,7 +64,7 @@ export class CreateEditShareScene {
let errorHandler = new ErrorHandler(error_form);
let map_validator = new FormValidator(errorHandler);
map_validator.addValidator(shareuser_input, validate_non_empty(shareuser_input, "Share User"));
map_validator.addValidator(shareuser_input, validate_not_empty_or_equals(shareuser_input, user, "Share User"));
map_validator.addValidator(sharehref_input, validate_href(sharehref_input, "Share Href"));
sharehref_input.addEventListener("input", onCleanHREFinput);

View File

@@ -76,6 +76,27 @@ export function validate_non_empty(input, field_name) {
return field_name + " is empty";
};
}
/**
* Validates that the input is not empty and not equal to a target string.
* @param {HTMLInputElement} input
* @param {string} target
* @param {string} field_name
* @returns {function(): ?string}
*/
export function validate_not_empty_or_equals(input, target, field_name) {
return () => {
let value = input.value.trim();
if (!value) {
return field_name + " is empty";
}
if (value === target) {
return field_name + " cannot be " + target;
}
return null;
};
}
/**
* Validates that the input is a valid HREF.
* @param {HTMLInputElement} input