/** * Copyright (c) Istituto Nazionale di Fisica Nucleare (INFN). 2006-2016 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.glite.security.voms.admin.operations.users; import org.glite.security.voms.User; import org.glite.security.voms.admin.event.EventManager; import org.glite.security.voms.admin.event.user.attribute.UserAttributeSetEvent; import org.glite.security.voms.admin.operations.BaseVomsOperation; import org.glite.security.voms.admin.operations.VOMSContext; import org.glite.security.voms.admin.operations.VOMSPermission; import org.glite.security.voms.admin.persistence.dao.VOMSUserDAO; import org.glite.security.voms.admin.persistence.error.NoSuchUserException; import org.glite.security.voms.admin.persistence.model.VOMSUser; import org.glite.security.voms.admin.persistence.model.attribute.VOMSUserAttribute; import org.glite.security.voms.service.attributes.AttributeValue; public class SetUserAttributeOperation extends BaseVomsOperation { VOMSUser user; String attributeName; String attributeDescription; String attributeValue; private SetUserAttributeOperation(VOMSUser u, String aName, String aDesc, String aValue) { user = u; attributeName = aName; attributeDescription = aDesc; attributeValue = aValue; } public Object doExecute() { VOMSUserAttribute attribute = VOMSUserDAO.instance().setAttribute(user, attributeName, attributeValue); EventManager.instance().dispatch(new UserAttributeSetEvent(user, attribute)); return attribute; } public static SetUserAttributeOperation instance(VOMSUser u, String aName, String aValue) { return new SetUserAttributeOperation(u, aName, null, aValue); } public static SetUserAttributeOperation instance(VOMSUser u, String aName, String aDesc, String aValue) { return new SetUserAttributeOperation(u, aName, aDesc, aValue); } public static SetUserAttributeOperation instance(User user, AttributeValue val) { VOMSUser u = (VOMSUser) FindUserOperation.instance(user.getDN(), user.getCA()).execute(); if (u == null) throw new NoSuchUserException("User '" + user.getDN() + "," + user.getCA() + "' not found in this vo."); return new SetUserAttributeOperation(u, val.getAttributeClass().getName(), val.getAttributeClass().getDescription(), val.getValue()); } protected void setupPermissions() { addRequiredPermission(VOMSContext.getVoContext(), VOMSPermission.getAttributesRWPermissions()); } }