Example #1
0
def view(request):
    if request.unauthenticated_userid is not None:
        request.session.flash("Already logged in, log out first", 'warning')
        return HTTPFound(location=request.route_url('home'))

    if "ok" in request.params:
        session = DBSession()
        view_params = {}
        for field_name in ("user_id", "user_name", "user_email"):
            if field_name in request.params:
                view_params[field_name] = request.params[field_name]

        # check all fields are correct
        uid = request.params["user_id"]
        if len(uid) == 0 or not is_good_id(uid):
            request.session.flash("User id is not a valid id", 'warning')
            return view_params

        name = request.params["user_name"]
        if len(name) == 0 or not is_good_name(name):
            request.session.flash("Name given is not valid", 'warning')
            return view_params

        email = request.params["user_email"]
        if len(email) == 0 or not is_good_email(email):
            request.session.flash("Email given is not valid", 'warning')
            return view_params

        # check user does not exist already
        # as a user
        user = User.get(session, uid)
        if user is not None:
            request.session.flash("User %s already exists" % uid, 'warning')
            return view_params

        # as a team
        team = Team.get(session, uid)
        if team is not None:
            msg = "User %s already exists as a team name" % uid
            request.session.flash(msg, 'warning')
            return view_params

        # register new user
        User.create(session, uid, name, email)
        return log_user_in(request, uid, True)

    else:
        return {}
def main(session, user, container):
    """Create ROs to test auth policies.

    Args:
        session (DBSession):
        user (User): default user
        container (ROContainer): top level container

    Returns:
        None
    """
    # create another user
    other = User.create(session,
                        uid='other',
                        name="Other User",
                        email="*****@*****.**")

    img = Image.open("seeweb/scripts/avatar/sartzet.png")
    upload_user_avatar(img, other)

    # user can view RO in container owner by other
    roa = ROArticle()
    roa.init(session, dict(owner=other.id, name="other article"))
    roa.store_description("Title\n=====\n\nLorem Ipsum\nlorem ipsum")
    roa.add_policy(session, user, Role.view)

    road = ROArticle()
    road.init(session, dict(owner=other.id, name="other editable article"))
    road.store_description("Title\n=====\n\nLorem Ipsum\nlorem ipsum")
    road.add_policy(session, user, Role.edit)

    roc = ROContainer()
    roc.init(session, dict(owner=other.id,
                           name="other project",
                           contents=[roa, road]))
    ROLink.connect(session, container.id, roc.id, 'contains')

    # access granted to ROs through their container policy
    roa = ROArticle()
    roa.init(session, dict(owner=other.id, name="other 'private' article"))
    roa.store_description("Title\n=====\n\nLorem Ipsum\nlorem ipsum")

    roc = ROContainer()
    roc.init(session, dict(owner=other.id,
                           name="other 'denied' project",
                           contents=[roa]))
    roc.add_policy(session, user, Role.denied)
    ROLink.connect(session, container.id, roc.id, 'contains')

    roc = ROContainer()
    roc.init(session, dict(owner=other.id,
                           name="other project",
                           contents=[roa]))
    roc.add_policy(session, user, Role.edit)
    ROLink.connect(session, container.id, roc.id, 'contains')

    # public container
    roa = ROArticle()
    roa.init(session, dict(owner=other.id, name="other article"))
    roa.store_description("Title\n=====\n\nLorem Ipsum\nlorem ipsum")

    road = ROArticle()
    road.init(session, dict(owner=other.id, name="other denied article"))
    road.store_description("Title\n=====\n\nLorem Ipsum\nlorem ipsum")
    road.add_policy(session, user, Role.denied)

    roc = ROContainer()
    roc.init(session, dict(owner=other.id,
                           name="other 'public' project",
                           contents=[roa, road]))
    roc.public = True
    ROLink.connect(session, container.id, roc.id, 'contains')
Example #3
0
def main(session):
    # users
    revesansparole = User.create(session,
                                 uid='revesansparole',
                                 name="Jerome Chopard",
                                 email="*****@*****.**")

    img = Image.open("seeweb/scripts/avatar/revesansparole.png")
    upload_user_avatar(img, revesansparole)
    users.append(revesansparole)

    doofus0 = User.create(session,
                          uid='doofus%d' % 0,
                          name="Dummy Doofus",
                          email="*****@*****.**")
    users.append(doofus0)

    doofus1 = User.create(session,
                          uid='doofus%d' % 1,
                          name="Dummy Doofus",
                          email="*****@*****.**")
    users.append(doofus1)

    pradal = User.create(session,
                         uid='pradal',
                         name="Christophe Pradal",
                         email="*****@*****.**")
    img = Image.open("seeweb/scripts/avatar/pradal.png")
    upload_user_avatar(img, pradal)
    users.append(pradal)

    sartzet = User.create(session,
                          uid='sartzet',
                          name="Simon Artzet",
                          email="*****@*****.**")
    img = Image.open("seeweb/scripts/avatar/sartzet.png")
    upload_user_avatar(img, sartzet)
    users.append(sartzet)

    fboudon = User.create(session,
                          uid='fboudon',
                          name="Fred Boudon",
                          email="*****@*****.**")
    img = Image.open("seeweb/scripts/avatar/fboudon.png")
    upload_user_avatar(img, fboudon)
    users.append(fboudon)

    # teams
    subsub_team = Team.create(session, uid="subsubteam")
    subsub_team.description = """Test team only"""
    subsub_team.add_policy(session, doofus0, Role.edit)
    teams.append(subsub_team)

    sub_team = Team.create(session, uid="subteam")
    sub_team.description = """Test team only"""
    sub_team.add_policy(session, doofus1, Role.edit)
    sub_team.add_policy(session, subsub_team, Role.edit)
    teams.append(sub_team)

    vplants = Team.create(session, uid="vplants")
    img = Image.open("seeweb/scripts/avatar/vplants.png")
    upload_team_avatar(img, vplants)
    descr = dedent("""
            Team
            ----
            INRIA team based in Montpellier

            """)
    vplants.store_description(descr)
    vplants.add_policy(session, pradal, Role.edit)
    vplants.add_policy(session, fboudon, Role.view)
    teams.append(vplants)

    oa = Team.create(session, uid="openalea")
    img = Image.open("seeweb/scripts/avatar/openalea.png")
    upload_team_avatar(img, oa)
    descr = dedent("""
            Community
            ---------

            OpenAlea is an open source project primarily aimed at the plant research community.
            It is a distributed collaborative effort to develop Python libraries and tools that address the needs of
            current and future works in Plant Architecture modeling.
            OpenAlea includes modules to analyse, visualize and model the functioning and growth of plant architecture.

            """)
    oa.store_description(descr)
    oa.add_policy(session, revesansparole, Role.edit)
    oa.add_policy(session, pradal, Role.view)
    oa.add_policy(session, sartzet, Role.view)
    oa.add_policy(session, vplants, Role.edit)
    oa.add_policy(session, sub_team, Role.edit)
    teams.append(oa)