Package org.jasig.cas.adaptors.ldap.services

Source Code of org.jasig.cas.adaptors.ldap.services.DefaultLdapServiceMapper

/*
* Copyright 2007 The JA-SIG Collaborative. All rights reserved. See license
* distributed with this file and available online at
* http://www.ja-sig.org/products/cas/overview/license/
*/
package org.jasig.cas.adaptors.ldap.services;

import org.jasig.cas.adaptors.ldap.util.SpringLdapUtils;
import org.jasig.cas.services.RegisteredService;
import org.jasig.cas.services.RegisteredServiceImpl;
import org.springframework.ldap.core.DirContextAdapter;
import org.springframework.ldap.core.DirContextOperations;
import org.springframework.ldap.core.DistinguishedName;
import org.springframework.ldap.filter.AndFilter;
import org.springframework.ldap.filter.EqualsFilter;
import org.springframework.ldap.filter.Filter;

import javax.validation.constraints.NotNull;
import java.util.Arrays;

/**
* Default implementation of LdapServiceMapper which maps each property of RegisteredService to a explicit LDAP attribute
*
* @author Siegfried Puchbauer, SPP (http://www.spp.at/)
*/
public final class DefaultLdapServiceMapper extends LdapServiceMapper {

    @NotNull
    private String objectclass = "casService";

    @NotNull
    private String serviceIdAttribute = "casServiceUrlPattern";

    @NotNull
    private String idAttribute = "casServiceId";

    @NotNull
    private String serviceDescriptionAttribute = "description";

    @NotNull
    private String namingAttribute = "cn";

    @NotNull
    private String serviceEnabledAttribute = "casServiceEnabled";

    @NotNull
    private String serviceSsoEnabledAttribute = "casServiceSsoEnabled";

    @NotNull
    private String serviceAnonymousAccessAttribute = "casServiceAnonymousAccess";

    @NotNull
    private String serviceAllowedToProxyAttribute = "casServiceAllowedToProxy";

    @NotNull
    private String serviceThemeAttribute = "casServiceTheme";

    @NotNull
    private String serviceAllowedAttributesAttribute = "casAllowedAttributes";


    protected RegisteredService doMapFromContext(final DirContextOperations ctx) {
        RegisteredServiceImpl s = new RegisteredServiceImpl();

        s.setId(Long.parseLong(ctx.getStringAttribute(this.idAttribute)));
        s.setServiceId(ctx.getStringAttribute(this.serviceIdAttribute));
        s.setName(ctx.getStringAttribute(this.namingAttribute));
        s.setEnabled(SpringLdapUtils.getBoolean(ctx, this.serviceEnabledAttribute));
        s.setAllowedToProxy(SpringLdapUtils.getBoolean(ctx, this.serviceAllowedToProxyAttribute));
        s.setAnonymousAccess(SpringLdapUtils.getBoolean(ctx, this.serviceAnonymousAccessAttribute));
        s.setDescription(ctx.getStringAttribute(this.serviceDescriptionAttribute));
        s.setSsoEnabled(SpringLdapUtils.getBoolean(ctx, this.serviceSsoEnabledAttribute));
        s.setTheme(ctx.getStringAttribute(this.serviceThemeAttribute));

        final String[] attributes = ctx.getStringAttributes(this.serviceAllowedAttributesAttribute);

        if (attributes != null) {
          s.setAllowedAttributes(Arrays.asList(attributes));
        }

        return s;
    }

    protected DirContextAdapter doMapToContext(final RegisteredService service,final  DirContextAdapter ctx) {
        ctx.setAttributeValue(this.idAttribute, String.valueOf(service.getId()));
        ctx.setAttributeValue(this.serviceIdAttribute, service.getServiceId());
        SpringLdapUtils.setBoolean(ctx, this.serviceEnabledAttribute, service.isEnabled());
        SpringLdapUtils.setBoolean(ctx, this.serviceAllowedToProxyAttribute, service.isAllowedToProxy());
        SpringLdapUtils.setBoolean(ctx, this.serviceAnonymousAccessAttribute, service.isAnonymousAccess());
        SpringLdapUtils.setBoolean(ctx, this.serviceSsoEnabledAttribute, service.isSsoEnabled());
        ctx.setAttributeValue(this.serviceThemeAttribute, service.getTheme());
        ctx.setAttributeValues(this.serviceAllowedAttributesAttribute, service.getAllowedAttributes().toArray(new String[service.getAllowedAttributes().size()]), false);
        ctx.setAttributeValue(this.serviceDescriptionAttribute, service.getDescription());
        if (!SpringLdapUtils.containsObjectClass(ctx, this.objectclass))
            ctx.addAttributeValue(SpringLdapUtils.OBJECTCLASS_ATTRIBUTE, this.objectclass);

        return ctx;
    }

    protected DirContextAdapter createCtx(final String parentDn, final RegisteredService service) {
        DistinguishedName dn = new DistinguishedName(parentDn);
        dn.add(this.namingAttribute, service.getName());
        return new DirContextAdapter(dn);
    }

    protected Filter getSearchFilter(final Long id) {
        return new AndFilter().and(getLoadFilter()).and(new EqualsFilter(this.idAttribute, String.valueOf(id)));
    }

    protected Filter getLoadFilter() {
        return new EqualsFilter(SpringLdapUtils.OBJECTCLASS_ATTRIBUTE, this.objectclass);
    }

    public void setObjectclass(final String objectclass) {
        this.objectclass = objectclass;
    }

    public void setServiceIdAttribute(final String serviceIdAttribute) {
        this.serviceIdAttribute = serviceIdAttribute;
    }

    public void setIdAttribute(final String idAttribute) {
        this.idAttribute = idAttribute;
    }

    public void setServiceDescriptionAttribute(final String serviceDescriptionAttribute) {
        this.serviceDescriptionAttribute = serviceDescriptionAttribute;
    }

    public void setNamingAttribute(final String namingAttribute) {
        this.namingAttribute = namingAttribute;
    }

    public void setServiceEnabledAttribute(final String serviceEnabledAttribute) {
        this.serviceEnabledAttribute = serviceEnabledAttribute;
    }

    public void setServiceSsoEnabledAttribute(final String serviceSsoEnabledAttribute) {
        this.serviceSsoEnabledAttribute = serviceSsoEnabledAttribute;
    }

    public void setServiceAnonymousAccessAttribute(final String serviceAnonymousAccessAttribute) {
        this.serviceAnonymousAccessAttribute = serviceAnonymousAccessAttribute;
    }

    public void setServiceAllowedToProxyAttribute(final String serviceAllowedToProxyAttribute) {
        this.serviceAllowedToProxyAttribute = serviceAllowedToProxyAttribute;
    }

    public void setServiceThemeAttribute(final String serviceThemeAttribute) {
        this.serviceThemeAttribute = serviceThemeAttribute;
    }

    public void setServiceAllowedAttributesAttribute(final String serviceAllowedAttributesAttribute) {
        this.serviceAllowedAttributesAttribute = serviceAllowedAttributesAttribute;
    }
}
TOP

Related Classes of org.jasig.cas.adaptors.ldap.services.DefaultLdapServiceMapper

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.