示例#1
0
 public IdentityApi(IEventPublisher eventPublisher, IUserIdentitiesRepository userIdentitiesRepository, ISessionsRepository sessionsRepository)
     : base("/api/identity")
 {
     Post("/userIdentities/register", _ => Execute(eventPublisher, this.Bind <RegisterUser>()));
     Post("/userIdentities/{id}/logIn", _ => Execute(eventPublisher, userIdentitiesRepository, new LogInUser {
         UserId = new UserId(_.Id)
     }));
     Delete("/sessions/{id}", _ => Execute(eventPublisher, sessionsRepository, new LogOutUser {
         SessionId = new SessionId(_.Id)
     }));
 }
示例#2
0
        private object Execute(IEventPublisher eventPublisher, IUserIdentitiesRepository userIdentitiesRepository, LogInUser command)
        {
            var userIdentity = userIdentitiesRepository.GetUserIdentity(command.UserId);

            var sessionId = userIdentity.LogIn(eventPublisher);

            return(Negotiate.WithStatusCode(HttpStatusCode.Created).WithModel(new
            {
                Id = sessionId,
                Url = "/api/identity/sessions/" + Uri.EscapeUriString(sessionId.ToString())
            }));
        }