package Ġorg . lux ons . se ven w ond ers . server . validation Ċ Ċ import Ġorg . lux ons . se ven w ond ers . server . repositories . Lobby Repository Ċ import Ġorg . springframework . stereotype . Component Ċ import Ġjava . util . regex . Pattern Ċ Ċ @ Component Ċ class ĠDestination Access Validator ( private Ġval Ġlob by Repository : ĠL obby Repository ) Ġ{ ĊĊĠĠĠ Ġfun Ġhas Access ( username : ĠString ?, Ġdestination : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ== Ġnull Ġ-> Ġfalse Ġ// Ġun named Ġuser Ġcannot Ġbelong Ġto Ġanything ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Forbidden Game Reference ( username , Ġdestination ) Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Forbidden Lobby Reference ( username , Ġdestination ) Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhas Forbidden Game Reference ( username : ĠString , Ġdestination : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgame Matcher Ġ= Ġgame Destination . matcher ( destination ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! game Matcher . matches ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse Ġ// Ġno Ġgame Ġreference Ġis Ġalways ĠOK ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġgame Id Ġ= Ġgame Matcher . group (" id "). to Long () ĊĠĠĠĠĠĠĠ Ġreturn Ġ! is User In Lobby ( username , Ġgame Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhas Forbidden Lobby Reference ( username : ĠString , Ġdestination : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlob by Matcher Ġ= Ġlob by Destination . matcher ( destination ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! lob by Matcher . matches ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse Ġ// Ġno Ġlob by Ġreference Ġis Ġalways ĠOK ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġlob by Id Ġ= Ġlob by Matcher . group (" id "). to Long () ĊĠĠĠĠĠĠĠ Ġreturn Ġ! is User In Lobby ( username , Ġlob by Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis User In Lobby ( username : ĠString , Ġlob by Id : ĠLong ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġlob by Repository . get ( lob by Id ). contains User ( username ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlob by Destination Ġ= ĠPattern . compile (" .*? / lob by / (? < id > \\ d + ? )( / .* )? ") ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġgame Destination Ġ= ĠPattern . compile (" .*? / game / (? < id > \\ d + ? )( / .* )? ") ĊĠĠĠ Ġ} Ċ } Ċ