updates
This commit is contained in:
@@ -2,21 +2,19 @@ package dev.inmo.postssystem.server
|
||||
|
||||
import dev.inmo.micro_utils.ktor.server.configurators.ApplicationRoutingConfigurator
|
||||
import io.ktor.application.call
|
||||
import io.ktor.http.content.files
|
||||
import io.ktor.http.content.static
|
||||
import io.ktor.http.content.*
|
||||
import io.ktor.response.respondRedirect
|
||||
import io.ktor.routing.Route
|
||||
import io.ktor.routing.get
|
||||
import java.io.File
|
||||
|
||||
class ClientStaticRoutingConfiguration(
|
||||
clientStatic: String?
|
||||
private val clientStatic: String?
|
||||
) : ApplicationRoutingConfigurator.Element {
|
||||
private val staticFile = clientStatic ?.let { File(clientStatic).takeIf { it.exists() } }
|
||||
override fun Route.invoke() {
|
||||
staticFile ?.let {
|
||||
clientStatic ?.let {
|
||||
static("client") {
|
||||
files(it)
|
||||
resources(it)
|
||||
get {
|
||||
call.respondRedirect("client/index.html")
|
||||
}
|
||||
|
||||
@@ -12,7 +12,6 @@ data class Config(
|
||||
val databaseConfig: DatabaseConfig = DatabaseConfig(),
|
||||
@SerialName("auth")
|
||||
val authConfig: AuthConfig = AuthConfig(),
|
||||
val clientStatic: String? = null,
|
||||
val filesFolder: String,
|
||||
val debugMode: Boolean = false
|
||||
) {
|
||||
|
||||
@@ -192,7 +192,7 @@ fun getDIModule(
|
||||
singleWithBinds { RolesManagerRolesStorageServerRoutesConfigurator(get(), get()) }
|
||||
singleWithBinds { ServerPostsServiceRoutingConfigurator(get(), get(), get()) }
|
||||
|
||||
singleWithBinds { ClientStaticRoutingConfiguration(get<Config>().clientStatic) }
|
||||
singleWithBinds { ClientStaticRoutingConfiguration("web") }
|
||||
singleWithBinds {
|
||||
RolesAuthenticationConfigurator<Role>(
|
||||
get(),
|
||||
@@ -213,6 +213,7 @@ fun getDIModule(
|
||||
)
|
||||
}
|
||||
singleWithBinds { AuthenticationRoutingConfigurator(get(), get(), get()) }
|
||||
singleWithBinds { NotFoundStatusPageRedirectToIndex("/client") }
|
||||
|
||||
if (config.debugMode) {
|
||||
single<ApplicationRoutingConfigurator.Element>(StringQualifier("Tracer")) { ApplicationRoutingConfigurator.Element {(this as Routing).trace { application.log.trace(it.buildText()) } } }
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
package dev.inmo.postssystem.server
|
||||
|
||||
import dev.inmo.micro_utils.ktor.server.configurators.StatusPagesConfigurator
|
||||
import io.ktor.application.call
|
||||
import io.ktor.features.StatusPages
|
||||
import io.ktor.http.HttpStatusCode
|
||||
import io.ktor.response.respondRedirect
|
||||
|
||||
data class NotFoundStatusPageRedirectToIndex(
|
||||
val redirectTo: String
|
||||
) : StatusPagesConfigurator.Element {
|
||||
override fun StatusPages.Configuration.invoke() {
|
||||
status(HttpStatusCode.NotFound) {
|
||||
call.respondRedirect(redirectTo)
|
||||
}
|
||||
}
|
||||
}
|
||||
5
server/src/main/resources/web/css/containers.css
Normal file
5
server/src/main/resources/web/css/containers.css
Normal file
@@ -0,0 +1,5 @@
|
||||
.vertical_container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
1
server/src/main/resources/web/css/uikit.min.css
vendored
Normal file
1
server/src/main/resources/web/css/uikit.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
3
server/src/main/resources/web/css/visibility.css
Normal file
3
server/src/main/resources/web/css/visibility.css
Normal file
@@ -0,0 +1,3 @@
|
||||
.gone {
|
||||
display: none;
|
||||
}
|
||||
24
server/src/main/resources/web/index.html
Normal file
24
server/src/main/resources/web/index.html
Normal file
@@ -0,0 +1,24 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>PostsSystem</title>
|
||||
|
||||
<link rel="stylesheet" href="css/uikit.min.css">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700" type="text/css">
|
||||
<link rel="stylesheet" href="css/containers.css" type="text/css">
|
||||
<link rel="stylesheet" href="css/visibility.css" type="text/css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="navbar" class="uk-section uk-section-secondary uk-padding-remove"></div>
|
||||
<main class="uk-flex">
|
||||
<div id="main" class="main-view"></div>
|
||||
<div id="modal"></div>
|
||||
</main>
|
||||
|
||||
<script src="js/uikit.min.js"></script>
|
||||
<script src="js/uikit-icons.min.js"></script>
|
||||
<script type="application/javascript" src="postssystem.client.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
1
server/src/main/resources/web/js/uikit-icons.min.js
vendored
Normal file
1
server/src/main/resources/web/js/uikit-icons.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
server/src/main/resources/web/js/uikit.min.js
vendored
Normal file
1
server/src/main/resources/web/js/uikit.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
server/src/main/resources/web/postssystem.client.js
Normal file
2
server/src/main/resources/web/postssystem.client.js
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user