subdomainValidation.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132
  1. import ApiRequestService from "~/services/data/apiRequestService";
  2. import {useAp2iRequestService} from "~/composables/data/useAp2iRequestService";
  3. export default class SubdomainValidation {
  4. private apiRequestService: ApiRequestService
  5. public constructor(apiRequestService: ApiRequestService) {
  6. this.apiRequestService = apiRequestService
  7. }
  8. /**
  9. * Le sous-domaine est valide s'il contient entre 2 et 60 caractères, et pas de caractères spéciaux
  10. * @param subdomain
  11. */
  12. public static isValid(subdomain: string | null): boolean {
  13. return subdomain !== null && subdomain.match(/^[\w\-]{2,60}$/) !== null
  14. }
  15. /**
  16. * Returns true if the given subdomain has not been registered yet or is not reserved
  17. * @param subdomain
  18. */
  19. public async isAvailable(subdomain: string): Promise<boolean> {
  20. if (subdomain === null) {
  21. return true
  22. }
  23. const { apiRequestService } = useAp2iRequestService()
  24. const subdomainAvailability: any = await apiRequestService.get('/api/subdomains/is_available', {'subdomain': subdomain})
  25. return subdomainAvailability && subdomainAvailability['available'] === true
  26. }
  27. }