-
Notifications
You must be signed in to change notification settings - Fork 18
Expand file tree
/
Copy pathFakeLoginForTestingController.kt
More file actions
29 lines (25 loc) · 989 Bytes
/
Copy pathFakeLoginForTestingController.kt
File metadata and controls
29 lines (25 loc) · 989 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package auth
import app.Before
import auth.Role.PUBLIC
import io.jooby.Context
import io.jooby.Environment
import io.jooby.Session
import io.jooby.annotations.*
import io.jooby.exception.NotFoundException
@Path("/fake-login")
class FakeLoginForTestingController(val userRepository: UserRepository, val env: Environment): Before {
override fun before(ctx: Context) {
if (!env.isActive("test")) throw IllegalStateException("$javaClass should not be active while not testing")
}
@GET("/{login}") @Access(PUBLIC)
fun fakeLogin(@PathParam login: String, @QueryParam page: String?, session: Session, ctx: Context) {
session.clear()
val user = userRepository.byLogin(login) ?: throw NotFoundException("No user: $login")
session.setUser(user)
ctx.sendRedirect("/en/app/${page ?: user.role.page}")
}
@POST("/session") @Access(PUBLIC)
fun fakeSessionChange(body: Map<String, String>, session: Session) {
body.forEach { session.put(it.key, it.value) }
}
}