xref: /OpenGrok/plugins/src/main/java/opengrok/auth/plugin/entity/User.java (revision cf8d876b669a88f2578319b4a452942876e58dcb)
1b28a5538SAdam Hornacek /*
2b28a5538SAdam Hornacek  * CDDL HEADER START
3b28a5538SAdam Hornacek  *
4b28a5538SAdam Hornacek  * The contents of this file are subject to the terms of the
5b28a5538SAdam Hornacek  * Common Development and Distribution License (the "License").
6b28a5538SAdam Hornacek  * You may not use this file except in compliance with the License.
7b28a5538SAdam Hornacek  *
8b28a5538SAdam Hornacek  * See LICENSE.txt included in this distribution for the specific
9b28a5538SAdam Hornacek  * language governing permissions and limitations under the License.
10b28a5538SAdam Hornacek  *
11b28a5538SAdam Hornacek  * When distributing Covered Code, include this CDDL HEADER in each
12b28a5538SAdam Hornacek  * file and include the License file at LICENSE.txt.
13b28a5538SAdam Hornacek  * If applicable, add the following below this CDDL HEADER, with the
14b28a5538SAdam Hornacek  * fields enclosed by brackets "[]" replaced with your own identifying
15b28a5538SAdam Hornacek  * information: Portions Copyright [yyyy] [name of copyright owner]
16b28a5538SAdam Hornacek  *
17b28a5538SAdam Hornacek  * CDDL HEADER END
18b28a5538SAdam Hornacek  */
19b28a5538SAdam Hornacek 
20b28a5538SAdam Hornacek /*
21*cf8d876bSVladimir Kotal  * Copyright (c) 2017, 2022, Oracle and/or its affiliates. All rights reserved.
22b28a5538SAdam Hornacek  */
23b28a5538SAdam Hornacek package opengrok.auth.plugin.entity;
24b28a5538SAdam Hornacek 
25b28a5538SAdam Hornacek import java.util.Date;
26b28a5538SAdam Hornacek import java.util.HashMap;
27b28a5538SAdam Hornacek import java.util.Map;
28b28a5538SAdam Hornacek 
29b28a5538SAdam Hornacek public class User {
30b28a5538SAdam Hornacek 
31b28a5538SAdam Hornacek     private String id;
32b28a5538SAdam Hornacek     private String username;
33b28a5538SAdam Hornacek     private Date cookieTimestamp;
34b28a5538SAdam Hornacek     private boolean timeouted;
35b28a5538SAdam Hornacek     private final Map<String, Object> attrs = new HashMap<>();
36b28a5538SAdam Hornacek 
User(String username)37b28a5538SAdam Hornacek     public User(String username) {
38b28a5538SAdam Hornacek         this.username = username;
39b28a5538SAdam Hornacek     }
40b28a5538SAdam Hornacek 
41e689929eSVladimir Kotal     /**
42e689929eSVladimir Kotal      * Construct User object.
43e689929eSVladimir Kotal      * @param username username
44e689929eSVladimir Kotal      * @param id user ID
45e689929eSVladimir Kotal      */
User(String username, String id)46e689929eSVladimir Kotal     public User(String username, String id) {
47e689929eSVladimir Kotal         this.username = username;
48*cf8d876bSVladimir Kotal         this.id = id;
49e689929eSVladimir Kotal     }
50e689929eSVladimir Kotal 
51e689929eSVladimir Kotal     /**
52e689929eSVladimir Kotal      * Construct User object.
53e689929eSVladimir Kotal      * @param username username
54e689929eSVladimir Kotal      * @param id user ID
55e689929eSVladimir Kotal      * @param cookieTimestamp cookie time stamp
56e689929eSVladimir Kotal      * @param timeouted is the user timed out
57e689929eSVladimir Kotal      */
User(String username, String id, Date cookieTimestamp, boolean timeouted)58b28a5538SAdam Hornacek     public User(String username, String id, Date cookieTimestamp, boolean timeouted) {
59*cf8d876bSVladimir Kotal         this(username, id);
60b28a5538SAdam Hornacek         this.cookieTimestamp = cookieTimestamp;
61b28a5538SAdam Hornacek         this.timeouted = timeouted;
62b28a5538SAdam Hornacek     }
63b28a5538SAdam Hornacek 
getId()64b28a5538SAdam Hornacek     public String getId() {
65b28a5538SAdam Hornacek         return id;
66b28a5538SAdam Hornacek     }
67b28a5538SAdam Hornacek 
setId(String id)68b28a5538SAdam Hornacek     public void setId(String id) {
69b28a5538SAdam Hornacek         this.id = id;
70b28a5538SAdam Hornacek     }
71b28a5538SAdam Hornacek 
getUsername()72b28a5538SAdam Hornacek     public String getUsername() {
73b28a5538SAdam Hornacek         return username;
74b28a5538SAdam Hornacek     }
75b28a5538SAdam Hornacek 
setUsername(String username)76b28a5538SAdam Hornacek     public void setUsername(String username) {
77b28a5538SAdam Hornacek         this.username = username;
78b28a5538SAdam Hornacek     }
79b28a5538SAdam Hornacek 
getCookieTimestamp()80b28a5538SAdam Hornacek     public Date getCookieTimestamp() {
81b28a5538SAdam Hornacek         return cookieTimestamp;
82b28a5538SAdam Hornacek     }
83b28a5538SAdam Hornacek 
setCookieTimestamp(Date cookieTimestamp)84b28a5538SAdam Hornacek     public void setCookieTimestamp(Date cookieTimestamp) {
85b28a5538SAdam Hornacek         this.cookieTimestamp = cookieTimestamp;
86b28a5538SAdam Hornacek     }
87b28a5538SAdam Hornacek 
getTimeouted()88b28a5538SAdam Hornacek     public boolean getTimeouted() {
89b28a5538SAdam Hornacek         return timeouted;
90b28a5538SAdam Hornacek     }
91b28a5538SAdam Hornacek 
setTimeouted(boolean timeouted)92b28a5538SAdam Hornacek     public void setTimeouted(boolean timeouted) {
93b28a5538SAdam Hornacek         this.timeouted = timeouted;
94b28a5538SAdam Hornacek     }
95b28a5538SAdam Hornacek 
isTimeouted()96b28a5538SAdam Hornacek     public boolean isTimeouted() {
97b28a5538SAdam Hornacek         return timeouted;
98b28a5538SAdam Hornacek     }
99b28a5538SAdam Hornacek 
100b28a5538SAdam Hornacek     /**
101ff44f24aSAdam Hornáček      * Implemented for the forced authentication as described in
102ff44f24aSAdam Hornáček      * <a href="https://docs.oracle.com/cd/B28196_01/idmanage.1014/b15997/mod_osso.htm#i1006381">mod_osso documentation</a>.
103b28a5538SAdam Hornacek      *
104b28a5538SAdam Hornacek      * @param forcedAuthDate the date of the forced authentication trigger
105b28a5538SAdam Hornacek      * @param newLoginDate the date of the new login
106b28a5538SAdam Hornacek      * @return true if login date was before forced auth date or cookie timestamp
107b28a5538SAdam Hornacek      */
isForcedTimeouted(Date forcedAuthDate, Date newLoginDate)108b28a5538SAdam Hornacek     public boolean isForcedTimeouted(Date forcedAuthDate, Date newLoginDate) {
109b28a5538SAdam Hornacek         if (cookieTimestamp == null || forcedAuthDate == null || newLoginDate == null) {
110b28a5538SAdam Hornacek             return true;
111b28a5538SAdam Hornacek         }
112b28a5538SAdam Hornacek 
113b28a5538SAdam Hornacek         return newLoginDate.before(forcedAuthDate) || newLoginDate.before(cookieTimestamp);
114b28a5538SAdam Hornacek     }
115b28a5538SAdam Hornacek 
116b28a5538SAdam Hornacek     /**
117b28a5538SAdam Hornacek      * Get custom user property.
118b28a5538SAdam Hornacek      *
119b28a5538SAdam Hornacek      * @param key the key
120b28a5538SAdam Hornacek      * @return the the value associated with the key
121b28a5538SAdam Hornacek      */
getAttribute(String key)122b28a5538SAdam Hornacek     public Object getAttribute(String key) {
123b28a5538SAdam Hornacek         return attrs.get(key);
124b28a5538SAdam Hornacek     }
125b28a5538SAdam Hornacek 
126b28a5538SAdam Hornacek     /**
127b28a5538SAdam Hornacek      * Set custom user property.
128b28a5538SAdam Hornacek      *
129b28a5538SAdam Hornacek      * @param key the key
130b28a5538SAdam Hornacek      * @param value the value
131b28a5538SAdam Hornacek      * @return the value previously associated with the key
132b28a5538SAdam Hornacek      */
setAttribute(String key, Object value)133b28a5538SAdam Hornacek     public Object setAttribute(String key, Object value) {
134b28a5538SAdam Hornacek         return attrs.put(key, value);
135b28a5538SAdam Hornacek     }
136b28a5538SAdam Hornacek 
137b28a5538SAdam Hornacek     /**
138b28a5538SAdam Hornacek      * Remote custom user property.
139b28a5538SAdam Hornacek      *
140b28a5538SAdam Hornacek      * @param key the key
141b28a5538SAdam Hornacek      * @return the value previously associated with the key
142b28a5538SAdam Hornacek      */
removeAttribute(String key)143b28a5538SAdam Hornacek     public Object removeAttribute(String key) {
144b28a5538SAdam Hornacek         return attrs.remove(key);
145b28a5538SAdam Hornacek     }
146b28a5538SAdam Hornacek 
147b28a5538SAdam Hornacek     @Override
toString()148b28a5538SAdam Hornacek     public String toString() {
149ff44f24aSAdam Hornáček         return "User{" + "id=" + id + ", username=" + username + ", cookieTimestamp=" + cookieTimestamp +
150ff44f24aSAdam Hornáček                 ", timeouted=" + timeouted + ", attrs=" + attrs + '}';
151b28a5538SAdam Hornacek     }
152b28a5538SAdam Hornacek }
153