Beispiel #1
0
def sendmailUser_mask(req, id, err=0):

    v = getAdminStdVars(req)
    v["path"] = req.path[1:]

    if id in["execute", "execu"]:

        userid = req.params.get("userid")
        user = getUser(userid)
        if not user:
            path = req.path[1:].split("/")
            user = getExternalUser(userid, path[-1])

        password = makeRandomPassword()
        user.resetPassword(password)

        text = req.params.get("text")
        text = text.replace("[wird eingesetzt]", password)
        try:
            mail.sendmail(req.params.get("from"), req.params.get("email"), req.params.get("subject"), text)
        except mail.SocketError:
            print "Socket error while sending mail"
            req.setStatus(httpstatus.HTTP_INTERNAL_SERVER_ERROR)
            return req.getTAL("web/admin/modules/user.html", v, macro="sendmailerror")
        return req.getTAL("web/admin/modules/user.html", v, macro="sendmaildone")

    user = getUser(id)
    if not user:
        path = req.path[1:].split("/")
        user = getExternalUser(id, path[-1])

    collections = []
    seen = {}
    access = acl.AccessData(user=user)
    for node in getAllCollections():
        if access.hasReadAccess(node):
            if access.hasWriteAccess(node):
                collections.append(node.name + " (lesen/schreiben)")
                seen[node.id] = None
    for node in tree.getRoot("collections").getChildren():
        if access.hasReadAccess(node) and node.id not in seen:
            collections.append(node.name + " (nur lesen)")
    x = {}
    x["name"] = "%s %s" % (user.getFirstName(), user.getLastName())
    if(x["name"] == ""):
        x["name"] = user.getName()
    x["host"] = config.get("host.name")
    x["login"] = user.getName()
    x["isEditor"] = user.isEditor()
    x["collections"] = list()
    x["groups"] = user.getGroups()
    x["groups"].sort()
    x["language"] = lang(req)
    x["collections"] = collections
    x["collections"].sort()

    v["mailtext"] = req.getTAL("web/admin/modules/user.html", x, macro="emailtext").strip()
    v["email"] = user.getEmail()
    v["userid"] = user.getName()
    return req.getTAL("web/admin/modules/user.html", v, macro="sendmail")
Beispiel #2
0
    def extractUser(s, userlist):
        while s[0] == "(" and s[-1] == ")":
            s = s[1:-1]

        if s.startswith("user "):
            s = s[5:]

        for utype in userlist.keys():
            if users.getExternalUser(s, utype):
                return (utype, s)
        return ("", s)
Beispiel #3
0
    def extractUser(s, userlist):
        while s[0] == "("and s[-1] == ")":
            s = s[1:-1]

        if s.startswith("user "):
            s = s[5:]

        for utype in userlist.keys():
            if users.getExternalUser(s, utype):
                return (utype, s)
        return ("", s)
Beispiel #4
0
def editUser_mask(req, id, err=0):
    ugroups = []
    usertype = req.params.get("usertype", "intern")
    newuser = 0

    if err == 0 and id == "":  # new user
        user = tree.Node("", type="user")
        user.setOption("c")
        newuser = 1

    elif err == 0 and id != "":  # edit user
        if usertype == "intern":
            user = getUser(id)
        else:
            user = getExternalUser(id)
    else:
        # error while filling values
        option = ""
        for key in req.params.keys():
            if key.startswith("option_"):
                option += key[7]

        for usergroup in req.params.get("usergroups", "").split(";"):
            ugroups += [usergroup]

        user = tree.Node("", type="user")
        user.setName(req.params.get("username", ""))
        user.setEmail(req.params.get("email", ""))
        user.setOption(option)
        user.setLastName(req.params.get("lastname", ""))
        user.setFirstName(req.params.get("firstname", ""))
        user.setTelephone(req.params.get("telephone", ""))
        user.setComment(req.params.get("comment", ""))
        user.setOrganisation(req.params.get("organisation", ""))

    v = getAdminStdVars(req)
    v["error"] = err
    v["user"] = user
    v["groups"] = loadGroupsFromDB()
    v["ugroups"] = ugroups
    v["useroption"] = useroption
    v["id"] = id
    v["usertype"] = usertype
    v["filtertype"] = req.params.get("filtertype", "")
    v["actpage"] = req.params.get("actpage")
    v["newuser"] = newuser
    v["usertypes"] = getExternalAuthentificators()
    return req.getTAL("web/admin/modules/user.html", v, macro="modify")
Beispiel #5
0
def editUser_mask(req, id, err=0):
    ugroups = []
    usertype = req.params.get("usertype", "intern")
    newuser = 0

    if err == 0 and id == "":  # new user
        user = tree.Node("", type="user")
        user.setOption("c")
        newuser = 1

    elif err == 0 and id != "":  # edit user
        if usertype == "intern":
            user = getUser(id)
        else:
            user = getExternalUser(id)
    else:
        # error while filling values
        option = ""
        for key in req.params.keys():
            if key.startswith("option_"):
                option += key[7]

        for usergroup in req.params.get("usergroups", "").split(";"):
            ugroups += [usergroup]

        user = tree.Node("", type="user")
        user.setName(req.params.get("username", ""))
        user.setEmail(req.params.get("email", ""))
        user.setOption(option)
        user.setLastName(req.params.get("lastname", ""))
        user.setFirstName(req.params.get("firstname", ""))
        user.setTelephone(req.params.get("telephone", ""))
        user.setComment(req.params.get("comment", ""))
        user.setOrganisation(req.params.get("organisation", ""))

    v = getAdminStdVars(req)
    v["error"] = err
    v["user"] = user
    v["groups"] = loadGroupsFromDB()
    v["ugroups"] = ugroups
    v["useroption"] = useroption
    v["id"] = id
    v["usertype"] = usertype
    v["filtertype"] = req.params.get("filtertype", "")
    v["actpage"] = req.params.get("actpage")
    v["newuser"] = newuser
    v["usertypes"] = getExternalAuthentificators()
    return req.getTAL("web/admin/modules/user.html", v, macro="modify")
Beispiel #6
0
    def getUser(self, name):
        identificator = name
        if name.find("@") < 0:
            user_url = config.get("ldap.user_url", "")
            if user_url:
                identificator = name + "@" + user_url
        pattern = re.compile("(^|.* )%s($| )" % identificator)
        user = users.getExternalUser(name, "ldapuser")
        if not user:
            for n in users.getExternalUsers("ldapuser"):
                if n.getName() == name or pattern.match(n.get("identificator")):
                    user = n
                    break

        user.setUserType("ldapuser")
        return user
Beispiel #7
0
    def getUser(self, name):
        identificator = name
        if name.find("@") < 0:
            user_url = config.get("ldap.user_url", "")
            if user_url:
                identificator = name + "@" + user_url
        pattern = re.compile("(^|.* )%s($| )" % identificator)
        user = users.getExternalUser(name, "ldapuser")
        if not user:
            for n in users.getExternalUsers("ldapuser"):
                if n.getName() == name or pattern.match(
                        n.get("identificator")):
                    user = n
                    break

        user.setUserType("ldapuser")
        return user
Beispiel #8
0
def sendmailUser_mask(req, id, err=0):

    v = getAdminStdVars(req)
    v["path"] = req.path[1:]

    if id in ["execute", "execu"]:

        userid = req.params.get("userid")
        user = getUser(userid)
        if not user:
            path = req.path[1:].split("/")
            user = getExternalUser(userid, path[-1])

        password = makeRandomPassword()
        user.resetPassword(password)

        text = req.params.get("text")
        text = text.replace("[wird eingesetzt]", password)
        try:
            mail.sendmail(req.params.get("from"), req.params.get("email"),
                          req.params.get("subject"), text)
        except mail.SocketError:
            print "Socket error while sending mail"
            req.setStatus(httpstatus.HTTP_INTERNAL_SERVER_ERROR)
            return req.getTAL("web/admin/modules/user.html",
                              v,
                              macro="sendmailerror")
        return req.getTAL("web/admin/modules/user.html",
                          v,
                          macro="sendmaildone")

    user = getUser(id)
    if not user:
        path = req.path[1:].split("/")
        user = getExternalUser(id, path[-1])

    collections = []
    seen = {}
    access = acl.AccessData(user=user)
    for node in getAllCollections():
        if access.hasReadAccess(node):
            if access.hasWriteAccess(node):
                collections.append(node.name + " (lesen/schreiben)")
                seen[node.id] = None
    for node in tree.getRoot("collections").getChildren():
        if access.hasReadAccess(node) and node.id not in seen:
            collections.append(node.name + " (nur lesen)")
    x = {}
    x["name"] = "%s %s" % (user.getFirstName(), user.getLastName())
    if (x["name"] == ""):
        x["name"] = user.getName()
    x["host"] = config.get("host.name")
    x["login"] = user.getName()
    x["isEditor"] = user.isEditor()
    x["collections"] = list()
    x["groups"] = user.getGroups()
    x["groups"].sort()
    x["language"] = lang(req)
    x["collections"] = collections
    x["collections"].sort()

    v["mailtext"] = req.getTAL("web/admin/modules/user.html",
                               x,
                               macro="emailtext").strip()
    v["email"] = user.getEmail()
    v["userid"] = user.getName()
    return req.getTAL("web/admin/modules/user.html", v, macro="sendmail")