import com.jfinal.plugin.activerecord.ActiveRecordPlugin import com.jfinal.plugin.druid.DruidPlugin import model.JFinalModelMenu import model.JFinalModelUser import model.JSONResponse import org.slf4j.LoggerFactory import ro.pippo.controller.ControllerApplication import ro.pippo.core.Pippo import ro.pippo.core.RequestResponseFactory import ro.pippo.session.SessionManager import ro.pippo.session.SessionRequestResponseFactory import ro.pippo.session.cookie.CookieSessionDataStorage import route.* import service.Service import util.md5 object Main { @JvmStatic fun main(args: Array) { // System.setProperty("user.timezone","Asia/Shanghai"); val pippo = Pippo(BasicApplication()) pippo.start() } } class BasicApplication : ControllerApplication() { private val log = LoggerFactory.getLogger(BasicApplication::class.java) // private val druidDataSource: DruidDataSource = DruidDataSource() override fun onInit() { getRouter().ignorePaths("/favicon.ico") // send files from a local folder (try a request like 'src/main/java/ro/pippo/demo/basic/BasicApplication.java') addFileResourceRoute("/src", "src") // register a custom ExceptionHandler errorHandler.setExceptionHandler(ForbiddenException::class.java) { e, routeContext -> log.info("Called custom exception handler") routeContext.setLocal("message", e.message) errorHandler.handle(403, routeContext) } // register a request logger routePreDispatchListeners.add { request, _ -> println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>") println("requestPath = " + request.path) println("requestUri = " + request.uri) println("requestUrl = " + request.url) println("contextPath = " + request.contextPath) println("applicationPath = " + request.applicationPath) println("applicationUri = " + request.applicationUri) println("applicationUriWithQuery = " + request.applicationUriWithQuery) println("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<") } ANY("/.*") { routeContext -> if (routeContext.requestUri.contains("user/auth")) { routeContext.next() return@ANY } else { val token = routeContext.getSession("token") val name = routeContext.getSession("name") if (token != null && name != null) { val user = Service().getUserByName(name) if (user != null) { if (token == md5(user.name + ":" + user.passwd)) { routeContext.next() return@ANY } } } } // routeContext.status(403) routeContext.json().send(JSONResponse(410,"",null)) }.runAsFinally() addControllers(CtrlUser::class.java) addControllers(CrtlGroup::class.java) addControllers(CtrlMenu::class.java) addControllers(CtrlPerm::class.java) addControllers(CtrlRole::class.java) val dp = DruidPlugin( "jdbc:mysql://rm-wz9n28sq10rz5b0u2o.mysql.rds.aliyuncs.com:3306/sh-upgram?serverTimezone=Asia/Shanghai", "shzhyjxy", "Admin111") val arp = ActiveRecordPlugin(dp) arp.addMapping("menu", JFinalModelMenu::class.java) arp.addMapping("user", JFinalModelUser::class.java) dp.start() arp.start() PUT("/test") { context -> context.send("ok") } } override fun createRequestResponseFactory(): RequestResponseFactory { val sessionDataStorage = CookieSessionDataStorage(pippoSettings) val sessionManager = SessionManager(sessionDataStorage) return SessionRequestResponseFactory(this, sessionManager) } } class ForbiddenException(message: String) : RuntimeException(message)