diff options
Diffstat (limited to 'src/main/java/org/traccar/model/User.java')
-rw-r--r-- | src/main/java/org/traccar/model/User.java | 276 |
1 files changed, 276 insertions, 0 deletions
diff --git a/src/main/java/org/traccar/model/User.java b/src/main/java/org/traccar/model/User.java new file mode 100644 index 000000000..976b6aac0 --- /dev/null +++ b/src/main/java/org/traccar/model/User.java @@ -0,0 +1,276 @@ +/* + * Copyright 2013 - 2018 Anton Tananaev (anton@traccar.org) + * + * 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.traccar.model; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +import org.traccar.database.QueryExtended; +import org.traccar.database.QueryIgnore; +import org.traccar.helper.Hashing; + +import java.util.Date; + +public class User extends ExtendedModel { + + private String name; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + private String login; + + public String getLogin() { + return login; + } + + public void setLogin(String login) { + this.login = login; + } + + private String email; + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email.trim(); + } + + private String phone; + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + private boolean readonly; + + public boolean getReadonly() { + return readonly; + } + + public void setReadonly(boolean readonly) { + this.readonly = readonly; + } + + private boolean administrator; + + public boolean getAdministrator() { + return administrator; + } + + public void setAdministrator(boolean administrator) { + this.administrator = administrator; + } + + private String map; + + public String getMap() { + return map; + } + + public void setMap(String map) { + this.map = map; + } + + private double latitude; + + public double getLatitude() { + return latitude; + } + + public void setLatitude(double latitude) { + this.latitude = latitude; + } + + private double longitude; + + public double getLongitude() { + return longitude; + } + + public void setLongitude(double longitude) { + this.longitude = longitude; + } + + private int zoom; + + public int getZoom() { + return zoom; + } + + public void setZoom(int zoom) { + this.zoom = zoom; + } + + private boolean twelveHourFormat; + + public boolean getTwelveHourFormat() { + return twelveHourFormat; + } + + public void setTwelveHourFormat(boolean twelveHourFormat) { + this.twelveHourFormat = twelveHourFormat; + } + + private String coordinateFormat; + + public String getCoordinateFormat() { + return coordinateFormat; + } + + public void setCoordinateFormat(String coordinateFormat) { + this.coordinateFormat = coordinateFormat; + } + + private boolean disabled; + + public boolean getDisabled() { + return disabled; + } + + public void setDisabled(boolean disabled) { + this.disabled = disabled; + } + + private Date expirationTime; + + public Date getExpirationTime() { + return expirationTime; + } + + public void setExpirationTime(Date expirationTime) { + this.expirationTime = expirationTime; + } + + private int deviceLimit; + + public int getDeviceLimit() { + return deviceLimit; + } + + public void setDeviceLimit(int deviceLimit) { + this.deviceLimit = deviceLimit; + } + + private int userLimit; + + public int getUserLimit() { + return userLimit; + } + + public void setUserLimit(int userLimit) { + this.userLimit = userLimit; + } + + private boolean deviceReadonly; + + public boolean getDeviceReadonly() { + return deviceReadonly; + } + + public void setDeviceReadonly(boolean deviceReadonly) { + this.deviceReadonly = deviceReadonly; + } + + private String token; + + public String getToken() { + return token; + } + + public void setToken(String token) { + if (token != null && !token.isEmpty()) { + if (!token.matches("^[a-zA-Z0-9-]{16,}$")) { + throw new IllegalArgumentException("Illegal token"); + } + this.token = token; + } else { + this.token = null; + } + } + + private boolean limitCommands; + + public boolean getLimitCommands() { + return limitCommands; + } + + public void setLimitCommands(boolean limitCommands) { + this.limitCommands = limitCommands; + } + + private String poiLayer; + + public String getPoiLayer() { + return poiLayer; + } + + public void setPoiLayer(String poiLayer) { + this.poiLayer = poiLayer; + } + + @QueryIgnore + public String getPassword() { + return null; + } + + public void setPassword(String password) { + if (password != null && !password.isEmpty()) { + Hashing.HashingResult hashingResult = Hashing.createHash(password); + hashedPassword = hashingResult.getHash(); + salt = hashingResult.getSalt(); + } + } + + private String hashedPassword; + + @JsonIgnore + @QueryExtended + public String getHashedPassword() { + return hashedPassword; + } + + public void setHashedPassword(String hashedPassword) { + this.hashedPassword = hashedPassword; + } + + private String salt; + + @JsonIgnore + @QueryExtended + public String getSalt() { + return salt; + } + + public void setSalt(String salt) { + this.salt = salt; + } + + public boolean isPasswordValid(String password) { + return Hashing.validatePassword(password, hashedPassword, salt); + } + +} |