private void WriteUserEvent( UserManagementMessage.UserManagementRequestMessage message, UserData userData, string eventType, long expectedVersion, Action after) { WriteUserEvent( userData, eventType, expectedVersion, completed => WriteUserCreatedCompleted(completed, message, after)); }
private static void ReplyByWriteResult( UserManagementMessage.UserManagementRequestMessage message, OperationResult operationResult) { switch (operationResult) { case OperationResult.Success: ReplyUpdated(message); break; case OperationResult.PrepareTimeout: case OperationResult.CommitTimeout: case OperationResult.ForwardTimeout: ReplyTryAgain(message); break; case OperationResult.WrongExpectedVersion: case OperationResult.StreamDeleted: ReplyConflict(message); break; default: ReplyInternalError(message); break; } }
private void WriteStreamAcl( UserManagementMessage.UserManagementRequestMessage message, string loginName, Action onSucceeded) { WriteStreamAcl( loginName, completed => { switch (completed.Result) { case OperationResult.Success: onSucceeded(); break; case OperationResult.CommitTimeout: case OperationResult.ForwardTimeout: case OperationResult.PrepareTimeout: case OperationResult.WrongExpectedVersion: ReplyTryAgain(message); break; default: ReplyInternalError(message); break; } }); }
private void WritePasswordChangedEventCompleted( UserManagementMessage.UserManagementRequestMessage message, ClientMessage.WriteEventsCompleted eventsCompleted, Action onCompleted) { switch (eventsCompleted.Result) { case OperationResult.Success: onCompleted(); break; case OperationResult.CommitTimeout: case OperationResult.ForwardTimeout: case OperationResult.PrepareTimeout: ReplyTryAgain(message); break; case OperationResult.AccessDenied: ReplyUnauthorized(message); break; case OperationResult.WrongExpectedVersion: ReplyConflict(message); break; default: ReplyInternalError(message); break; } }
private bool DemandAdmin(UserManagementMessage.UserManagementRequestMessage message) { if (message.Principal == null || !message.Principal.IsInRole(SystemRoles.Admins)) { ReplyUnauthorized(message); return(false); } return(true); }
private static void WriteUserCreatedCompleted( ClientMessage.WriteEventsCompleted completed, UserManagementMessage.UserManagementRequestMessage message) { if (completed.Result == OperationResult.Success) { ReplyUpdated(message); return; } ReplyByWriteResult(message, completed.Result); }
private static void ReplyError( UserManagementMessage.UserManagementRequestMessage message, UserManagementMessage.Error error) { //TODO: avoid 'is' if (message is UserManagementMessage.Get) { message.Envelope.ReplyWith(new UserManagementMessage.UserDetailsResult(error)); } else { message.Envelope.ReplyWith(new UserManagementMessage.UpdateResult(message.LoginName, error)); } }
private void WritePasswordChangedEventConditionalAnd( UserManagementMessage.UserManagementRequestMessage message, bool resetPasswordCache, Action onCompleted) { if (resetPasswordCache) { BeginWritePasswordChangedEvent( message.LoginName, eventsCompleted => WritePasswordChangedEventCompleted(message, eventsCompleted, onCompleted)); } else { onCompleted(); } }
private void ReadUpdateWriteReply( UserManagementMessage.UserManagementRequestMessage message, Func <UserData, UserData> update, bool resetPasswordCache) { ReadUpdateCheckAnd( message, (completed, data) => { var updated = update(data); if (updated != null) { WritePasswordChangedEventConditionalAnd( message, resetPasswordCache, () => WriteUserEvent(message, updated, UserUpdated, completed.FromEventNumber, null)); } }); }
private void ReadUserDetailsAnd( UserManagementMessage.UserManagementRequestMessage message, Action <ClientMessage.ReadStreamEventsBackwardCompleted, UserData> action) { string loginName = message.LoginName; BeginReadUserDetails( loginName, completed => { switch (completed.Result) { case ReadStreamResult.NoStream: ReplyNotFound(message); break; case ReadStreamResult.StreamDeleted: ReplyNotFound(message); break; case ReadStreamResult.Success: if (completed.Events.Length == 0) { ReplyNotFound(message); } else { var data1 = completed.Events[0].Event.Data.ParseJson <UserData>(); action(completed, data1); } break; default: ReplyInternalError(message); break; } }); }
private static void ReplyUpdated(UserManagementMessage.UserManagementRequestMessage message) { message.Envelope.ReplyWith(new UserManagementMessage.UpdateResult(message.LoginName)); }
private static void ReplyTryAgain(UserManagementMessage.UserManagementRequestMessage message) { ReplyError(message, UserManagementMessage.Error.TryAgain); }
private static void ReplyUnauthorized(UserManagementMessage.UserManagementRequestMessage message) { //NOTE: probably unauthorized iis not correct reply here. // been converted to http 401 status code it will prompt for authorization ReplyError(message, UserManagementMessage.Error.Unauthorized); }
private static void ReplyConflict(UserManagementMessage.UserManagementRequestMessage message) { ReplyError(message, UserManagementMessage.Error.Conflict); }
private static void ReplyNotFound(UserManagementMessage.UserManagementRequestMessage message) { ReplyError(message, UserManagementMessage.Error.NotFound); }
private static void ReplyInternalError(UserManagementMessage.UserManagementRequestMessage message) { ReplyError(message, UserManagementMessage.Error.Error); }
private void ReadUpdateCheckAnd( UserManagementMessage.UserManagementRequestMessage message, Action <ClientMessage.ReadStreamEventsBackwardCompleted, UserData> action) { ReadUserDetailsAnd(message, action); }