Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package blog
- import kotlinx.html.*
- import kotlinx.html.stream.* // for createHTML
- import org.jetbrains.ktor.application.*
- import org.jetbrains.ktor.auth.*
- import org.jetbrains.ktor.features.*
- import org.jetbrains.ktor.http.*
- import org.jetbrains.ktor.response.*
- import org.jetbrains.ktor.routing.*
- import org.jetbrains.ktor.request.* // for request.uri
- import org.jetbrains.ktor.html.*
- import org.jetbrains.ktor.pipeline.*
- import org.jetbrains.ktor.host.* // for embededServer
- import org.jetbrains.ktor.netty.* // for Netty
- fun main(args: Array<String>) {
- embeddedServer(Netty, 8080, watchPaths = listOf("BlogAppKt"), module = Application::module).start()
- }
- fun Application.module() {
- install(DefaultHeaders)
- install(CallLogging)
- intercept(ApplicationCallPipeline.Call) {
- if (call.request.uri == "/hi")
- call.respondText("Test String")
- }
- install(Routing) {
- get("/") {
- call.respondText("""Hello, world!<br><a href="/bye">Say bye?</a>""", ContentType.Text.Html)
- }
- get("/bye") {
- call.respondText("""Good bye! <br><a href="/login">Login?</a> """, ContentType.Text.Html)
- }
- route("/login") {
- authentication {
- formAuthentication { up: UserPasswordCredential ->
- when {
- up.password == "ppp" -> UserIdPrincipal(up.name)
- else -> null
- }
- }
- }
- handle {
- val principal = call.authentication.principal<UserIdPrincipal>()
- if (principal != null) {
- call.respondText("Hello, ${principal.name}")
- } else {
- val html = createHTML().html {
- body {
- form(action = "/login", encType = FormEncType.applicationXWwwFormUrlEncoded, method = FormMethod.post) {
- p {
- +"user:"
- textInput(name = "user") {
- value = principal?.name ?: ""
- }
- }
- p {
- +"password:"
- passwordInput(name = "pass")
- }
- p {
- submitInput() { value = "Login" }
- }
- }
- }
- }
- call.respondText(html, ContentType.Text.Html)
- }
- }
- }
- }
- }
- authentication {
- formAuthentication { up: UserPasswordCredential ->
- when {
- up.password == "ppp" -> UserIdPrincipal(up.name)
- else -> null
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement