All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.freedomotic.plugins.devices.restapiv3.resources.jersey.RoleResource Maven / Gradle / Ivy

The newest version!
/**
 *
 * Copyright (c) 2009-2014 Freedomotic team http://freedomotic.com
 *
 * This file is part of Freedomotic
 *
 * This Program is free software; you can redistribute it and/or modify it under
 * the terms of the GNU General Public License as published by the Free Software
 * Foundation; either version 2, or (at your option) any later version.
 *
 * This Program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
 * details.
 *
 * You should have received a copy of the GNU General Public License along with
 * Freedomotic; see the file COPYING. If not, see
 * .
 */
package com.freedomotic.plugins.devices.restapiv3.resources.jersey;

import com.freedomotic.plugins.devices.restapiv3.filters.ItemNotFoundException;
import com.freedomotic.plugins.devices.restapiv3.representations.RoleRepresentation;
import com.freedomotic.plugins.devices.restapiv3.utils.AbstractResource;
import com.freedomotic.security.User;
import com.wordnik.swagger.annotations.Api;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;
import javax.ws.rs.Path;
import org.apache.shiro.authz.SimpleRole;

/**
 *
 * @author matteo
 */
@Path("system/roles")
@Api(value = "roles", description = "Operations on global roles")
public class RoleResource extends AbstractResource {

    @Override
    protected URI doCopy(String UUID) {
        SimpleRole sr = api.getAuth().getRole(UUID);
        if (sr != null) {
            SimpleRole s2 = new SimpleRole("CopyOf-" + sr.getName(), sr.getPermissions());
            api.getAuth().addRole(s2);
            return createUri(s2.getName());
        }
        return null;
    }

    @Override
    protected URI doCreate(RoleRepresentation o) throws URISyntaxException {
        if (api.getAuth().getRole(o.getName()) == null) {
            api.getAuth().addRole(o.asSimpleRole());
            return createUri(o.getName());
        } else {
            return null;
        }
    }

    @Override
    protected boolean doDelete(String UUID) {
        api.getAuth().deleteRole(UUID);
        return true;
    }

    @Override
    protected RoleRepresentation doUpdate(String uuid, RoleRepresentation o) {
        o.setName(uuid);
        SimpleRole sr = api.getAuth().getRole(o.getName());
        if (sr != null) {
            List users = new ArrayList();
            for (User u : api.getAuth().getUsers().values()) {
                if (u.getRoles().contains(o.getName())) {
                    users.add(u);
                }
            }
            api.getAuth().deleteRole(o.getName());
            api.getAuth().addRole(o.asSimpleRole());
            for (User u : users) {
                u.addRole(o.getName());
            }
            return o;
        }
        return null;
    }

    @Override
    protected List prepareList() {
        List rr = new ArrayList();
        for (SimpleRole r : api.getAuth().getRoles().values()) {
            rr.add(new RoleRepresentation(r));
        }
        return rr;
    }

    @Override
    protected RoleRepresentation prepareSingle(String uuid) {
        SimpleRole sr = api.getAuth().getRole(uuid);
        if (sr != null) {
            return new RoleRepresentation(sr);
        }
        return null;
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy