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

org.bonitasoft.engine.session.model.SSession Maven / Gradle / Ivy

There is a newer version: 10.2.0
Show newest version
/**
 * Copyright (C) 2019 Bonitasoft S.A.
 * Bonitasoft, 32 rue Gustave Eiffel - 38000 Grenoble
 * This library is free software; you can redistribute it and/or modify it under the terms
 * of the GNU Lesser General Public License as published by the Free Software Foundation
 * version 2.1 of the License.
 * This library 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 Lesser General Public License for more details.
 * You should have received a copy of the GNU Lesser General Public License along with this
 * program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
 * Floor, Boston, MA 02110-1301, USA.
 **/
package org.bonitasoft.engine.session.model;

import java.io.Serializable;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Set;

import lombok.AccessLevel;
import lombok.Builder;
import lombok.Data;
import lombok.Setter;

/**
 * @author Elias Ricken de Medeiros
 * @author Yanyan Liu
 * @author Matthieu Chaffotte
 */
@Data
@Setter(AccessLevel.PRIVATE) // to ensure fields are immutable
@Builder(toBuilder = true)
public class SSession implements Serializable {

    private long tenantId;
    private final long id;
    /**
     * creation date (GMT+0)
     */
    private Date creationDate;
    private long duration;

    /**
     * last renew date (GMT+0)
     */
    @Setter(AccessLevel.PUBLIC) // for cluster testing
    private Date lastRenewDate;
    private String userName;
    private long userId;
    //FIXME: remove it, it looks like it is never set
    private String clusterNode;
    private String applicationName;
    /**
     * true if the user is the technical user: false otherwise
     */
    private boolean technicalUser;
    private List profiles;
    @Builder.Default
    private Set userPermissions = Collections.emptySet();

    /**
     * @return the expiration date (GMT+0)
     */
    public Date getExpirationDate() {
        return new Date(lastRenewDate.getTime() + duration);
    }

    /**
     * @return true if the session is still valid
     */
    public boolean isValid() {
        return getExpirationDate().getTime() > System.currentTimeMillis();
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy