/*
* Copyright (C) 2010-2012 Stichting Akvo (Akvo Foundation)
*
* This file is part of Akvo FLOW.
*
* Akvo FLOW is free software: you can redistribute it and modify it under the terms of
* the GNU Affero General Public License (AGPL) as published by the Free Software Foundation,
* either version 3 of the License or any later version.
*
* Akvo FLOW 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 Affero General Public License included below for more details.
*
* The full license text can also be seen at <http://www.gnu.org/licenses/agpl.html>.
*/
package com.gallatinsystems.auth.domain;
import java.util.Date;
import javax.jdo.annotations.PersistenceCapable;
import com.gallatinsystems.framework.domain.BaseDomain;
/**
* Domain to capture authorization tokens used for various web activities. Authorizations are
* token-based and can be either 1-time or multiple use. Authorizations may also be given an
* expiration date, after which they are no longer valid.
*
* @author Christopher Fagiani
*/
@PersistenceCapable
public class WebActivityAuthorization extends BaseDomain {
private static final long serialVersionUID = -8359553595104751266L;
private Long userId;
private Long maxUses;
private String token;
private String authType;
private Date expirationDate;
private Long usageCount;
private String webActivityName;
private String payload;
private String name;
private String userName;
public WebActivityAuthorization() {
usageCount = 0L;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPayload() {
return payload;
}
public void setPayload(String payload) {
this.payload = payload;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Long getMaxUses() {
return maxUses;
}
public void setMaxUses(Long maxUses) {
this.maxUses = maxUses;
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public String getAuthType() {
return authType;
}
public void setAuthType(String authType) {
this.authType = authType;
}
public Date getExpirationDate() {
return expirationDate;
}
public void setExpirationDate(Date expirationDate) {
this.expirationDate = expirationDate;
}
public Long getUsageCount() {
return usageCount;
}
public void setUsageCount(Long usageCount) {
this.usageCount = usageCount;
}
public String getWebActivityName() {
return webActivityName;
}
public void setWebActivityName(String webActivityName) {
this.webActivityName = webActivityName;
}
/**
* checks that this authorization object is neither expired nor fully used
*
* @return
*/
public boolean isValidForAuth() {
if (getExpirationDate() != null
&& getExpirationDate().before(new Date())) {
return false;
}
if (getMaxUses() != null && getUsageCount() != null) {
if (getUsageCount() >= getMaxUses()) {
return false;
}
}
return true;
}
}