X-Git-Url: https://git.hcoop.net/bpt/portal.git/blobdiff_plain/efbc26063c71e0822c6982a0c34048600552a4df..1a386fa5b094a101abedba54ec92a350be1b712f:/app/app.sml diff --git a/app/app.sml b/app/app.sml index 96d9f47..911b5cb 100644 --- a/app/app.sml +++ b/app/app.sml @@ -2,7 +2,7 @@ structure App :> APP = struct val baseUrl = "https://join.hcoop.net/join/" -val portalUrl = "https://members2.hcoop.net/portal/" +val portalUrl = "https://members.hcoop.net/portal/" open Sql @@ -159,10 +159,11 @@ fun validHost s = fun validDomain s = size s > 0 andalso size s < 100 andalso List.all validHost (String.fields (fn ch => ch = #".") s) -fun validUser s = - size s > 0 andalso size s < 50 andalso List.all - (fn ch => isIdent ch orelse ch = #"." orelse ch = #"_" orelse ch = #"-" orelse ch = #"+") - (String.explode s) +fun validUsername name = + size name <= 12 + andalso size name > 0 + andalso Char.isLower (String.sub (name, 0)) + andalso CharVector.all Char.isAlphaNum name fun validEmailUser s = size s > 0 andalso size s < 50 andalso List.all @@ -175,7 +176,9 @@ fun validEmail s = | _ => false) fun userExists name = - (Posix.SysDB.getpwnam name; true) handle OS.SysErr _ => false + case C.oneOrNoRows (getDb ()) ($`SELECT id FROM WebUser WHERE name = ^(C.stringToSql name)`) of + SOME _ => true + | NONE => (Posix.SysDB.getpwnam name; true) handle OS.SysErr _ => false fun confirm (id, passwd) = let