/* * Copyright 2013 - 2017 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.helper.Hashing; import java.util.Date; import java.util.TimeZone; public class User extends Extensible { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } private String email; public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } 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 admin; public boolean getAdmin() { return admin; } public void setAdmin(boolean admin) { this.admin = admin; } private String map; public String getMap() { return map; } public void setMap(String map) { this.map = map; } private String distanceUnit; public String getDistanceUnit() { return distanceUnit; } public void setDistanceUnit(String distanceUnit) { this.distanceUnit = distanceUnit; } private String speedUnit; public String getSpeedUnit() { return speedUnit; } public void setSpeedUnit(String speedUnit) { this.speedUnit = speedUnit; } 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() { if (expirationTime != null) { return new Date(expirationTime.getTime()); } else { return null; } } public void setExpirationTime(Date expirationTime) { if (expirationTime != null) { this.expirationTime = new Date(expirationTime.getTime()); } else { this.expirationTime = null; } } 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; } } 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 public String getHashedPassword() { return hashedPassword; } public void setHashedPassword(String hashedPassword) { this.hashedPassword = hashedPassword; } private String salt; @JsonIgnore public String getSalt() { return salt; } public void setSalt(String salt) { this.salt = salt; } public boolean isPasswordValid(String password) { return Hashing.validatePassword(password, hashedPassword, salt); } private String timezone; public void setTimezone(String timezone) { this.timezone = timezone != null ? TimeZone.getTimeZone(timezone).getID() : null; } public String getTimezone() { return timezone; } }