Search in sources :

Example 1 with User

use of org.traccar.model.User in project traccar by tananaev.

the class SecurityRequestFilter method filter.

@Override
public void filter(ContainerRequestContext requestContext) {
    if (requestContext.getMethod().equals("OPTIONS")) {
        return;
    }
    SecurityContext securityContext = null;
    try {
        String authHeader = requestContext.getHeaderString(AUTHORIZATION_HEADER);
        if (authHeader != null) {
            try {
                String[] auth = decodeBasicAuth(authHeader);
                User user = Context.getPermissionsManager().login(auth[0], auth[1]);
                if (user != null) {
                    Context.getStatisticsManager().registerRequest(user.getId());
                    securityContext = new UserSecurityContext(new UserPrincipal(user.getId()));
                }
            } catch (SQLException e) {
                throw new WebApplicationException(e);
            }
        } else if (request.getSession() != null) {
            Long userId = (Long) request.getSession().getAttribute(SessionResource.USER_ID_KEY);
            if (userId != null) {
                Context.getPermissionsManager().checkUserEnabled(userId);
                Context.getStatisticsManager().registerRequest(userId);
                securityContext = new UserSecurityContext(new UserPrincipal(userId));
            }
        }
    } catch (SecurityException e) {
        Log.warning(e);
    }
    if (securityContext != null) {
        requestContext.setSecurityContext(securityContext);
    } else {
        Method method = resourceInfo.getResourceMethod();
        if (!method.isAnnotationPresent(PermitAll.class)) {
            Response.ResponseBuilder responseBuilder = Response.status(Response.Status.UNAUTHORIZED);
            if (!XML_HTTP_REQUEST.equals(request.getHeader(X_REQUESTED_WITH))) {
                responseBuilder.header(WWW_AUTHENTICATE, BASIC_REALM);
            }
            throw new WebApplicationException(responseBuilder.build());
        }
    }
}
Also used : User(org.traccar.model.User) WebApplicationException(javax.ws.rs.WebApplicationException) SQLException(java.sql.SQLException) Method(java.lang.reflect.Method) Response(javax.ws.rs.core.Response) SecurityContext(javax.ws.rs.core.SecurityContext) PermitAll(javax.annotation.security.PermitAll)

Example 2 with User

use of org.traccar.model.User in project traccar by tananaev.

the class NotificationSms method sendSmsAsync.

public static void sendSmsAsync(long userId, Event event, Position position) {
    User user = Context.getPermissionsManager().getUser(userId);
    if (Context.getSmppManager() != null && user.getPhone() != null) {
        Context.getStatisticsManager().registerSms();
        Context.getSmppManager().sendMessageAsync(user.getPhone(), NotificationFormatter.formatSmsMessage(userId, event, position), false);
    }
}
Also used : User(org.traccar.model.User)

Example 3 with User

use of org.traccar.model.User in project traccar by tananaev.

the class NotificationMail method sendMailSync.

public static void sendMailSync(long userId, Event event, Position position) throws MessagingException {
    User user = Context.getPermissionsManager().getUser(userId);
    Properties properties = null;
    if (!Context.getConfig().getBoolean("mail.smtp.ignoreUserConfig")) {
        properties = getProperties(new PropertiesProvider(user));
    }
    if (properties == null || !properties.containsKey("mail.smtp.host")) {
        properties = getProperties(new PropertiesProvider(Context.getConfig()));
    }
    if (!properties.containsKey("mail.smtp.host")) {
        Log.warning("No SMTP configuration found");
        return;
    }
    Session session = Session.getInstance(properties);
    MimeMessage message = new MimeMessage(session);
    String from = properties.getProperty("mail.smtp.from");
    if (from != null) {
        message.setFrom(new InternetAddress(from));
    }
    message.addRecipient(Message.RecipientType.TO, new InternetAddress(user.getEmail()));
    MailMessage mailMessage = NotificationFormatter.formatMailMessage(userId, event, position);
    message.setSubject(mailMessage.getSubject());
    message.setSentDate(new Date());
    message.setContent(mailMessage.getBody(), "text/html; charset=utf-8");
    Transport transport = session.getTransport();
    try {
        Context.getStatisticsManager().registerMail();
        transport.connect(properties.getProperty("mail.smtp.host"), properties.getProperty("mail.smtp.username"), properties.getProperty("mail.smtp.password"));
        transport.sendMessage(message, message.getAllRecipients());
    } finally {
        transport.close();
    }
}
Also used : InternetAddress(javax.mail.internet.InternetAddress) User(org.traccar.model.User) MimeMessage(javax.mail.internet.MimeMessage) Properties(java.util.Properties) Transport(javax.mail.Transport) Date(java.util.Date) Session(javax.mail.Session)

Example 4 with User

use of org.traccar.model.User in project traccar by traccar.

the class DataManager method login.

public User login(String email, String password) throws SQLException {
    User user = QueryBuilder.create(dataSource, getQuery("database.loginUser")).setString("email", email.trim()).executeQuerySingle(User.class);
    LdapProvider ldapProvider = Context.getLdapProvider();
    if (user != null) {
        if (ldapProvider != null && user.getLogin() != null && ldapProvider.login(user.getLogin(), password) || !forceLdap && user.isPasswordValid(password)) {
            return user;
        }
    } else {
        if (ldapProvider != null && ldapProvider.login(email, password)) {
            user = ldapProvider.getUser(email);
            Context.getUsersManager().addItem(user);
            return user;
        }
    }
    return null;
}
Also used : User(org.traccar.model.User) ManagedUser(org.traccar.model.ManagedUser)

Example 5 with User

use of org.traccar.model.User in project traccar by traccar.

the class LdapProvider method getUser.

public User getUser(String accountName) {
    SearchResult ldapUser;
    User user = new User();
    try {
        ldapUser = lookupUser(accountName);
        if (ldapUser != null) {
            Attribute attribute = ldapUser.getAttributes().get(idAttribute);
            if (attribute != null) {
                user.setLogin((String) attribute.get());
            } else {
                user.setLogin(accountName);
            }
            attribute = ldapUser.getAttributes().get(nameAttribute);
            if (attribute != null) {
                user.setName((String) attribute.get());
            } else {
                user.setName(accountName);
            }
            attribute = ldapUser.getAttributes().get(mailAttribute);
            if (attribute != null) {
                user.setEmail((String) attribute.get());
            } else {
                user.setEmail(accountName);
            }
        }
        user.setAdmin(isAdmin(accountName));
    } catch (NamingException e) {
        user.setLogin(accountName);
        user.setName(accountName);
        user.setEmail(accountName);
        Log.warning(e);
    }
    return user;
}
Also used : User(org.traccar.model.User) Attribute(javax.naming.directory.Attribute) SearchResult(javax.naming.directory.SearchResult) NamingException(javax.naming.NamingException)

Aggregations

User (org.traccar.model.User)33 PermitAll (javax.annotation.security.PermitAll)11 WebApplicationException (javax.ws.rs.WebApplicationException)7 POST (javax.ws.rs.POST)6 NotificationMessage (org.traccar.notification.NotificationMessage)6 Date (java.util.Date)5 Method (java.lang.reflect.Method)3 Properties (java.util.Properties)3 Session (javax.mail.Session)3 Transport (javax.mail.Transport)3 InternetAddress (javax.mail.internet.InternetAddress)3 MimeMessage (javax.mail.internet.MimeMessage)3 Response (javax.ws.rs.core.Response)3 SecurityContext (javax.ws.rs.core.SecurityContext)3 VelocityContext (org.apache.velocity.VelocityContext)3 StatisticsManager (org.traccar.database.StatisticsManager)3 ManagedUser (org.traccar.model.ManagedUser)3 SQLException (java.sql.SQLException)2 NamingException (javax.naming.NamingException)2 Attribute (javax.naming.directory.Attribute)2