All Downloads are FREE. Search and download functionalities are using the official Maven repository.

app.controller.Main Maven / Gradle / Ivy

package app.controller;

import java.util.Optional;

import app.config.Sys;
import framework.Application;
import framework.Response;
import framework.Session;
import framework.Tool;
import framework.annotation.Letters;
import framework.annotation.Route;
import framework.annotation.Size;

/**
 * main controller
 */
public class Main {

    /**
     * @param application Application
     * @param session Session
     * @param extension Extension
     * @param loginId Login id
     * @param password Password
     * @param url redirect url
     * @return Response
     */
    @Route(value = "login(?\\.json|)")
    Object login(Application application, Session session, String extension,
            @Size(min = 4, value = 20) @Letters(Letters.ASCII) Optional loginId, @Letters(Letters.ASCII) Optional password, Optional url) {
        boolean isJson = ".json".equals(extension);
        if (session.login(loginId.orElse("guest"), password.orElse(""))) {
            session.remove("alert");
            if (isJson) {
                return Response.of(Tool.array("", url.orElseGet(application::getContextPath)));
            }
            return Response.redirect(url.orElseGet(application::getContextPath));
        } else {
            if (isJson) {
                return Response.of(Tool.array(Sys.Alert.loginFailed, Tool.map("loginId", null, "password", null)));
            }
            session.setAttr("alert", Sys.Alert.loginFailed);
            return Response.redirect(Tool.path(application.getContextPath(), Sys.redirect_if_not_login.orElse("")).apply("/"));
        }
    }

    /**
     * @param application Application
     * @param extension Extension
     * @param session Session
     * @param url redirect url
     * @return Response
     */
    @Route(value = "logout(?\\.json|)")
    Object logout(Application application, String extension, Session session, Optional url) {
        session.logout();
        session.put("alert", "");
        return ".json".equals(extension) ? Response.of(Tool.array("", url.orElseGet(application::getContextPath))) : Response.redirect(url.orElseGet(application::getContextPath));
    }

    /**
     * @param session Session
     * @return Response
     */
    @Route("alert")
    Object alert(Session session) {
        return session.flash("alert");
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy