public IMaybe <Jwt.BearerToken> MaybeCreateBearerToken(Jwt.RefreshToken refreshToken)
        {
            if (refreshToken.HasExpired)
            {
                return(None <Jwt.BearerToken> .Exists);
            }

            var maybeSession = _sessionRepository.MaybeGetOne(refreshToken.Id);

            return(maybeSession.Case(
                       some: session => Some <Jwt.BearerToken> .Exists(new Jwt.BearerToken(
                                                                           username: session.User.Username, role: session.User.Role
                                                                           )),
                       none: () => None <Jwt.BearerToken> .Exists
                       ));
        }
 public ActionResult Logout(Jwt.RefreshToken refreshToken)
 {
     return(_sessionCommand.Execute(new SessionCommand.Delete(
                                        id: refreshToken.Id
                                        )));
 }