This commit is contained in:
2022-01-25 15:21:01 +06:00
parent 3746efc596
commit e4dfdc07fc
595 changed files with 59923 additions and 47 deletions

View File

@@ -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")
}

View File

@@ -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
) {

View File

@@ -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()) } } }

View File

@@ -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)
}
}
}

View File

@@ -0,0 +1,5 @@
.vertical_container {
display: flex;
flex-direction: column;
align-items: center;
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,3 @@
.gone {
display: none;
}

View 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>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long