Skip to content

Commit 8641319

Browse files
committed
#1712 Add a vuu server ID to login success message
1 parent 856b524 commit 8641319

File tree

6 files changed

+33
-28
lines changed

6 files changed

+33
-28
lines changed

example/main-java/src/main/java/org/finos/vuu/VuuExampleMain.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,18 +25,18 @@
2525
import org.finos.vuu.state.VuiStateStore;
2626
import scala.Option;
2727

28+
import java.util.UUID;
29+
2830
/**
2931
* Example Java App using Vuu.
3032
*
3133
*/
32-
public class VuuExampleMain
33-
{
34+
public class VuuExampleMain {
3435
/*
3536
//to allow self signed certs
3637
chrome://flags/#allow-insecure-localhost
3738
*/
38-
public static void main( String[] args )
39-
{
39+
public static void main(String[] args) {
4040
final MetricsProvider metrics = new MetricsProviderImpl();
4141
final Clock clock = new DefaultClock();
4242
final LifecycleContainer lifecycle = new LifecycleContainer(clock);
@@ -46,8 +46,9 @@ public static void main( String[] args )
4646

4747
lifecycle.autoShutdownHook();
4848

49+
final String vuuServerId = UUID.randomUUID().toString();
4950
final Authenticator authenticator = new AlwaysHappyAuthenticator();
50-
final LoggedInTokenValidator loginTokenValidator = new LoggedInTokenValidator();
51+
final LoggedInTokenValidator loginTokenValidator = new LoggedInTokenValidator(vuuServerId);
5152

5253
final String webRoot = "vuu-ui/deployed_apps/app-vuu-example";
5354
final String certPath = "example/main/src/main/resources/certs/cert.pem";
@@ -65,7 +66,7 @@ public static void main( String[] args )
6566
.withBindAddress("0.0.0.0"),
6667
VuuSecurityOptions.apply()
6768
.withAuthenticator(authenticator)
68-
.withLoginValidator(new AlwaysHappyLoginValidator()),
69+
.withLoginValidator(new AlwaysHappyLoginValidator(vuuServerId)),
6970
VuuThreadingOptions.apply()
7071
.withTreeThreads(4)
7172
.withViewPortThreads(4),

vuu/src/main/scala/org/finos/vuu/core/VuuServerOptions.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import org.finos.vuu.plugin.Plugin
88

99
object VuuSecurityOptions{
1010
def apply(): VuuSecurityOptions = {
11-
VuuSecurityOptionsImpl(new AlwaysHappyAuthenticator, new AlwaysHappyLoginValidator)
11+
VuuSecurityOptionsImpl(new AlwaysHappyAuthenticator, new AlwaysHappyLoginValidator("vuuServer"))
1212
}
1313
}
1414

vuu/src/main/scala/org/finos/vuu/net/LoginTokenValidator.scala

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,32 +3,32 @@ package org.finos.vuu.net
33
import java.util.concurrent.{ConcurrentHashMap, ConcurrentMap}
44

55
trait LoginTokenValidator {
6-
def login(msg: LoginRequest): Either[ViewServerMessage, String]
6+
def login(msg: LoginRequest): ViewServerMessage
77
}
88

9-
class AlwaysHappyLoginValidator extends LoginTokenValidator {
9+
class AlwaysHappyLoginValidator(val vuuServerId: String = "vuuServer") extends LoginTokenValidator {
1010

11-
override def login(msg: LoginRequest): Either[ViewServerMessage, String] = {
12-
Left(JsonViewServerMessage("", "", msg.token, msg.user, LoginSuccess(msg.token)))
11+
override def login(msg: LoginRequest): ViewServerMessage = {
12+
JsonViewServerMessage("", "", msg.token, msg.user, LoginSuccess(msg.token, vuuServerId))
1313
}
1414
}
1515

16-
class ServerUserPrincipal(val token: String, val userName: String){
16+
class ServerUserPrincipal(val token: String, val userName: String) {
1717
}
1818

19-
class LoggedInTokenValidator extends LoginTokenValidator {
19+
class LoggedInTokenValidator(val vuuServerId: String = "vuuServer") extends LoginTokenValidator {
2020

2121
private val tokenUserMap: ConcurrentMap[String, ServerUserPrincipal] = new ConcurrentHashMap[String, ServerUserPrincipal]()
2222

2323
def register(token: String, userPrincipal: ServerUserPrincipal): Unit = {
2424
tokenUserMap.put(token, userPrincipal)
2525
}
2626

27-
override def login(msg: LoginRequest): Either[ViewServerMessage, String] = {
28-
if(tokenUserMap.containsKey(msg.token)){
29-
Left(JsonViewServerMessage("", "", msg.token, msg.user, LoginSuccess(msg.token)))
30-
}else{
31-
Right("User token not found")
27+
override def login(msg: LoginRequest): ViewServerMessage = {
28+
if (tokenUserMap.containsKey(msg.token)) {
29+
JsonViewServerMessage("", "", msg.token, msg.user, LoginSuccess(msg.token, vuuServerId))
30+
} else {
31+
JsonViewServerMessage("", "", msg.token, msg.user, LoginFailure(msg.token, "User token not found"))
3232
}
3333
}
3434
}

vuu/src/main/scala/org/finos/vuu/net/Messages.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ case class AuthenticateFailure(msg: String) extends MessageBody
4848

4949
case class LoginRequest(token: String, user: String) extends MessageBody
5050

51-
case class LoginSuccess(token: String) extends MessageBody
51+
case class LoginSuccess(token: String, vuuServerId: String) extends MessageBody
5252

5353
case class LoginFailure(token: String, errorMsg: String) extends MessageBody
5454

vuu/src/main/scala/org/finos/vuu/net/RequestProcessor.scala

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,23 +29,27 @@ class RequestProcessor(authenticator: Authenticator,
2929

3030
def handle(msg: ViewServerMessage, channel: Channel): Option[ViewServerMessage] = {
3131

32-
3332
msg.body match {
3433
case body: AuthenticateRequest =>
3534
authenticator.authenticate(body.username, body.password)
3635
case body: LoginRequest =>
37-
tokenValidator.login(body) match {
38-
case Left(accept) =>
39-
createSession(msg.requestId, body, clientSessionContainer, channel)
40-
case Right(errorMsg) =>
41-
handleMessageWithNoSession(errorMsg, channel)
36+
tokenValidator.login(body).body match {
37+
case success: LoginSuccess =>
38+
createSession(msg.requestId, body, clientSessionContainer, channel, success.vuuServerId)
39+
case failure: LoginFailure =>
40+
handleMessageWithNoSession(failure.errorMsg, channel)
4241
None
4342
}
4443
case body => handleViewServerMessage(msg, channel)
4544
}
4645
}
4746

48-
protected def createSession(requestId: String, request: LoginRequest, clientSessionContainer: ClientSessionContainer, channel: Channel): Option[ViewServerMessage] = {
47+
protected def createSession(
48+
requestId: String,
49+
request: LoginRequest,
50+
clientSessionContainer: ClientSessionContainer,
51+
channel: Channel,
52+
vuuServerId: String): Option[ViewServerMessage] = {
4953

5054
val session = SessionId.oneNew()
5155
val user = request.user
@@ -58,7 +62,7 @@ class RequestProcessor(authenticator: Authenticator,
5862

5963
clientSessionContainer.register(id, handler)
6064

61-
Some(JsonViewServerMessage(requestId, session, request.token, request.user, LoginSuccess(request.token)))
65+
Some(JsonViewServerMessage(requestId, session, request.token, request.user, LoginSuccess(request.token, vuuServerId)))
6266
}
6367

6468

vuu/src/test/scala/org/finos/vuu/json/JsonVsSerializerTest.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ class JsonVsSerializerTest extends AnyFeatureSpec with Matchers{
6464
roundTrip(AuthenticateRequest("chris", "foobar"))
6565
roundTrip(AuthenticateSuccess("christoken"))
6666
roundTrip(LoginRequest("AAA11122233", "chris"))
67-
roundTrip(LoginSuccess("AAA11122233"))
67+
roundTrip(LoginSuccess("AAA11122233", "vuuServerId"))
6868
roundTrip(HeartBeat(123l))
6969
roundTrip(HeartBeatResponse(123l))
7070
roundTrip(RpcUpdate(ViewPortTable("orderEntry", "CORE"), "Foo", Map("Foo" -> 123, "Bar" -> true, "Whizzle" -> "TANG", "HooHa" -> 344567l)))

0 commit comments

Comments
 (0)