cert: remove obsolete suggestion you need a dedicated IP for TLS
[hcoop/portal.git] / group.sml
index 6df85de..afab84f 100644 (file)
--- a/group.sml
+++ b/group.sml
@@ -73,6 +73,18 @@ fun userInGroupName (usr, grp) =
           | _ => false)
     end
 
+fun userReallyInGroupName (usr, grp) =
+    let
+       val c = getDb ()
+    in
+       (case C.oneOrNoRows c ($`SELECT COUNT( * )
+                                   FROM Membership, WebGroup
+                                   WHERE (name = ^(C.stringToSql grp) AND grp = id)
+                                      AND usr = ^(C.intToSql usr)`) of
+            SOME[x] => not (C.isNull x) andalso C.intFromSql x <> 0
+          | _ => false)
+    end
+
 
 (* Managing group memberships *)
 
@@ -107,16 +119,18 @@ fun mkMembershipRow [grp, usr] =
   | mkMembershipRow row = Init.rowError ("membership", row)
 
 fun groupMembers grp =
-    C.map (getDb ()) mkUserRow ($`SELECT id, name, rname, bal, joined, app, shares FROM Membership, WebUser
-                                       WHERE grp = ^(C.intToSql grp)
-                                          AND usr = id
-                                       ORDER BY name`)
+    C.map (getDb ()) mkUserRow ($`SELECT id, name, rname, bal, joined, app, shares, paypal, checkout
+                                 FROM Membership, WebUser
+                                 WHERE grp = ^(C.intToSql grp)
+                                   AND usr = id
+                                 ORDER BY name`)
 
 
 (* Checking memberships of the current user *)
 
 fun inGroupNum grp = userInGroupNum (getUserId(), grp)
 fun inGroupName grp = userInGroupName (getUserId(), grp)
+fun reallyInGroupName grp = userReallyInGroupName (getUserId(), grp)
 
 fun requireGroupNum grp =
     if inGroupNum grp then
@@ -130,6 +144,12 @@ fun requireGroupName grp =
     else
        raise Access ("You aren't a member of group \"" ^ grp ^ "\"")
 
+fun requireAnyGroupName groups =
+    if List.exists (fn grp => inGroupName grp) groups then
+       ()
+    else
+       raise Access ("You aren't a member of any groups \"" ^ String.concatWith ", " groups ^ "\"")
+
 fun validGroupName name =
     size name <= 10
     andalso CharVector.all Char.isAlphaNum name