public bool Equals(ZeroToken other) { if (ReferenceEquals(null, other)) { return(false); } if (ReferenceEquals(this, other)) { return(true); } bool audEqual = Audiences.Count == other.Audiences.Count && Audiences.All(other.Audiences.Contains); bool claimsEqual = Claims.Count == other.Claims.Count && Claims.All(other.Claims.Contains); bool result = audEqual && string.Equals(Issuer, other.Issuer) && CreationTime.Equals(other.CreationTime) && Lifetime == other.Lifetime && string.Equals(Type, other.Type) && string.Equals(ClientId, other.ClientId) && AccessTokenType == other.AccessTokenType && claimsEqual && Version == other.Version; return(result); }
private string ProduceToken(long?pkSystemUser, string client_id, ApiContext context) { var apiSession = Aparte.WebApi.BeginApiSession.Execute(context, pkSystemUser); Aparte.WebApi.GetTenant.Execute(context, apiSession); context = null; var token = new JWEAsymmetric(); try { token.AsymmetricKey = Audiences.Item(client_id).PublicKey; token.SetExpiry(apiSession.TokenExpiry); token.AddClaim(JWTConstant.PK_SYSTEM_USER, apiSession.PKSystemUser.ToString()); token.AddClaim(JWTConstant.USER_NAME, apiSession.UserName); token.AddClaim(JWTConstant.USER_CODE, apiSession.UserCode); token.AddClaim(JWTConstant.ACCESS_TOKEN, apiSession.AccessToken.ToString()); token.AddClaim(JWTConstant.REFRESH_TOKEN, apiSession.RefreshToken.ToString()); } catch (Exception ex) { } var encryptedToken = token.SerializeToBase64UrlString(); UserList.Add(apiSession.PKSystemUser, apiSession.UserName, apiSession.UserCode, apiSession.AccessToken, apiSession.RefreshToken, apiSession.TokenExpiry); return(encryptedToken); }
/// <summary> /// Initialize entities for scenario /// </summary> public override void InitializeEntities() { //Aggiungo l'amministrator Users.Add(new User { Id = Guid.NewGuid().ToString("D"), UserName = "******", Email = "*****@*****.**", IsEnabled = true, IsLocked = false, PersonName = "Digital", PersonSurname = "ZenProgramming", PasswordHash = ShaProcessor.Sha256Encrypt("password"), LastAccessDate = DateTime.UtcNow.AddDays(-1), PhotoBinary = new byte[] {} }); //Creo l'audience corrente (Nativa) Audiences.Add(new Audience { Id = Guid.NewGuid().ToString("D"), Name = "Heimdallr Api", ClientId = "heimdallr.api", ClientSecret = "IxrAjDoa2FqElO7IhrSrUJELhUckePEPVpaePlS_Xaw", HasAdministrativeAccess = true, IsEnabled = true, IsNative = true, AllowedOrigin = "*", RefreshTokenLifeTime = 30 }); }
public bool TriedWholeDomain(ValuePickingHeuristic heuristic, FilteringHeuristic filtering) //TO DO: reduce code { if (filtering != FilteringHeuristic.NONE) { if (PossibleValues.Count == 0) { FillPossibleValues(); return(true); } return(false); } switch (heuristic) { case ValuePickingHeuristic.LCV: if (PossibleValues.Count == 0) { FillPossibleValues(); return(true); } return(false); default: var lastDayTime = Value.DayValue == Days.Last() && Value.TimeValue == Times.Last(); return(lastDayTime && Value.AudienceValue == Audiences.Last() && Value.TeacherValue == Teachers.Last()); } }
StepByStepPicking( FilteringHeuristic filtering) //choosing next value (tries all possible variations of parametrs, if doesnt fit - backtracking will solve the issue) { if (filtering == FilteringHeuristic.NONE) { if (Value.TeacherValue != Teachers.Last()) { Value.TeacherValue = Teachers.ElementAt(Teachers.IndexOf(Value.TeacherValue) + 1); } else if (Value.AudienceValue != Audiences.Last()) { Value.TeacherValue = Teachers.First(); // resetting previous data element Value.AudienceValue = Audiences.ElementAt(Audiences.IndexOf(Value.AudienceValue) + 1); } else if (Value.TimeValue != Times.Last()) { Value.AudienceValue = Audiences.First(); // resetting previous data element Value.TimeValue = Times.ElementAt(Times.IndexOf(Value.TimeValue) + 1); } else if (Value.DayValue != Days.Last()) { Value.TimeValue = Times.First(); // resetting previous data element Value.DayValue = Days.ElementAt(Days.IndexOf(Value.DayValue) + 1); } } else { Value = new Value(PossibleValues.First()); PossibleValues.RemoveAt(0); } }
public void SendAlert() { if (IsValid()) { var props = Writer.EnsureProperties(properties); props.Add(XFConstants.EventWriter.EventType, EventTypeOption.Alert); props.Add(XFConstants.Alert.Title, Title); props.Add(XFConstants.Alert.Message, Message); props.Add(XFConstants.Alert.Categories, Categories.ToString()); props.Add(XFConstants.Alert.Urgency, Urgency.ToString()); props.Add(XFConstants.Alert.Importance, Importance.ToString()); props.Add(XFConstants.Alert.Targets, Audiences.ToString()); props.Add(XFConstants.Alert.Source, Source); props.Add(XFConstants.Alert.CreatedAt, DateTime.Now.ToString(XFConstants.DateTimeFormat)); if (!String.IsNullOrEmpty(Error)) { props.Add(XFConstants.Alert.Error, Error); } if (!String.IsNullOrWhiteSpace(Stacktrace)) { props.Add(XFConstants.Alert.StackTrace, Stacktrace); } if (!String.IsNullOrWhiteSpace(NamedRecipient)) { props.Add(XFConstants.Alert.NamedTarget, NamedRecipient); } if (!String.IsNullOrWhiteSpace(Topic)) { props.Add(XFConstants.Alert.Topic, Topic); } List <TypedItem> list = Writer.Convert(props); EventWriter.Write(EventTypeOption.Alert, list); } }
/// <summary> /// Initialize entities for scenario /// </summary> public override void InitializeEntities() { //Inizializzazione base base.InitializeEntities(); //Aggiungo l'amministrator Users.Add(new User { Id = Guid.NewGuid().ToString("D"), UserName = "******", Email = "*****@*****.**", IsEnabled = true, IsLocked = false, PersonName = "Mario", PersonSurname = "Rossi", PasswordHash = ShaProcessor.Sha256Encrypt("password"), LastAccessDate = DateTime.UtcNow.AddDays(-1), PhotoBinary = new byte[] { } }); //Creo l'audience corrente (Nativa) Audiences.Add(new Audience { Id = Guid.NewGuid().ToString("D"), Name = "Sample Resource", ClientId = "sample.resource", ClientSecret = "_IqrVEUhwO19o9nQ-9DtOfzYAL5THZrGcWgCO1-Xa0k", HasAdministrativeAccess = false, IsEnabled = true, IsNative = true, AllowedOrigin = "*", RefreshTokenLifeTime = 30 }); }
private void RemoveRoomData_ButtonClick(object sender, RoutedEventArgs e) { try { if (SelectedRoom != null) { var messageBoxResult = MessageBox.Show("Вы действительно удалить данную аудиторию?", "Подтверждение действия", MessageBoxButton.YesNo, MessageBoxImage.Question); if (messageBoxResult == MessageBoxResult.Yes) { Connection.Database.audiences.Remove(SelectedRoom); Audiences.Remove(SelectedRoom); Connection.Database.SaveChanges(); } } else { MessageBox.Show("Аудитория не выбрана.", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Warning); } } catch (Exception err) { MessageBox.Show(err.Message, "Ошибка сохранения", MessageBoxButton.OK, MessageBoxImage.Warning); Connection.Database.audiences.Remove(SelectedRoom); } }
public AddLecturesViewModel() { foreach (var uniqueGroup in _lecturesStorageModel.UniqueGroups) { Audiences.Add(uniqueGroup); } foreach (var uniqueTeacher in _lecturesStorageModel.UniqueTeachers) { Lecturers.Add(uniqueTeacher); } foreach (var combinedLecture in _lecturesStorageModel.CombinedLectures) { Lectures.Add(combinedLecture); } _lectures = new List <Lecture>(_lecturesStorageModel.Lectures); if (_lecturesStorageModel.CombinedLectures != null && _lecturesStorageModel.CombinedLectures.Count > 0) { FillCombinedLectures(); } UpdateLists(); UpdateLectures(); }
public override int GetHashCode() { int hash = 1; if (Id.Length != 0) { hash ^= Id.GetHashCode(); } if (Issuer.Length != 0) { hash ^= Issuer.GetHashCode(); } if (JwksUri.Length != 0) { hash ^= JwksUri.GetHashCode(); } if (Audiences.Length != 0) { hash ^= Audiences.GetHashCode(); } if (AuthorizationUrl.Length != 0) { hash ^= AuthorizationUrl.GetHashCode(); } if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return(hash); }
public void InitValue() { Value.DayValue = Days.First(); Value.TimeValue = Times.First(); Value.AudienceValue = Audiences.First(); Value.TeacherValue = Teachers.First(); Value.Empty = false; }
public IHttpActionResult VerifyClient([FromBody] Aparte.Credentials.ApplicationCredential application) { var token = new JWEAsymmetric(); token.AddClaim(JWTConstant.CLAIM_SYMMETRIC_KEY, Audiences.Item(KeyFile.JEDIX_WIN_CLIENT_NAME).SecretSymmetricKey); token.AsymmetricKey = Audiences.Item(KeyFile.JEDIX_WIN_CLIENT_NAME).PublicKey; return(Ok <string>(token.SerializeToBase64UrlString())); }
/// <summary> /// Resets this instance. /// </summary> private void Reset() { IsAddReportOpen = Visibility.Collapsed; Title = string.Empty; Audiences.Single(a => a.Value == (int)Audience.Professionals).IsSelected = true; Audiences.Where(a => a.Value != (int)Audience.Professionals).ForEach(a => a.IsSelected = false); }
private void CutOffStaticLimitations(string subject, LessonType type) { if (type == LessonType.Lecture) { Audiences = Audiences.Where(x => _lectureAudiences.Contains(x)).ToList(); Teachers = new List <string> { _subjectLecturer[subject] }; } }
public App() { Web = new AppWeb(); SignInAudience = new Audiences(); RequiredResourceAccess = new List <RequiredResourceAccess>(); PasswordCredentials = new List <PasswordCredential>(); KeyCredentials = new List <KeyCredential>(); IdentifierUris = new List <string>(); PublicClient = new PublicClient(); }
public override ICommandResponse Handle(StopJamCommand command) { var bout = _boutDataService.Load(command.BoutId); var state = _boutRunnerService.GetBoutState(command.BoutId); //State must be in jam if (state.Phase != BoutPhase.Jam) { throw new InvalidBoutPhaseException(state.Phase); } //Check to see if bout is over if (state.GameClock.Elapsed.Seconds < bout.RuleSet.PeriodDurationSeconds) { //Still good state.LineupStart = DateTime.Now; state.Phase = BoutPhase.Lineup; state.CreateNextJam(); //keep the jam clock going in case of undo } else { //Intermission if (state.Period < bout.RuleSet.NumberOfPeriods) { state.JamNumber = 1; state.Period++; state.GameClock.Clear(); state.Phase = BoutPhase.Halftime; } else //Game Over { state.Phase = BoutPhase.UnofficialFinal; } } state.JamStart = DateTime.Now; state.GameClock.Start(); var response = new UpdateBoutStateResponse(state); state.PenaltyBox.ForEach(x => { x.StopWatch.Stop(); response.AddEvent(new ChairUpdatedEvent(state.BoutId, x), Audiences.Bout(state.BoutId)); }); return(response); }
private void AudienceTextBox_DropDownOpened(object sender, EventArgs e) { var ownerEditorWindowInstance = (this.Owner as LessonsWindow).Owner as EditorWindow; var data = ownerEditorWindowInstance.HomePage.AudiencesWindowInstance?.AudiencesList.Items; if (data != null) { foreach (var item in data) { Audiences.Add(item as SchoolAudience); } } }
public override ICommandResponse Handle(CreatePenaltyCommand command) { var state = _boutRunner.GetBoutState(command.BoutId); var data = _boutData.Load(command.BoutId); var penalty = new Penalty(command.Team, command.Period, command.Jam, state.GameClock.Elapsed, data.RuleSet.PenaltyDurationSeconds); state.Penalties.Add(penalty); var response = new CommandResponse(); response.AddEvent(new PenaltyUpdatedEvent(command.BoutId, penalty), Audiences.Bout(command.BoutId)); return(response); }
public override ICommandResponse Handle(ButtHitSeatCommand command) { var response = new CommandResponse(); var state = _boutRunner.GetBoutState(command.BoutId); if (state.PenaltyBox.Any(x => x.Id == command.Chair.Id)) { throw new ButtAlreadyInChairException(command.Chair.Id); } if (state.Phase == Entities.BoutPhase.Jam) { command.Chair.StopWatch.Start(); } if (command.Chair.IsJammer) { var jammer = state.GetCurrentJammer(command.Chair.Team); if (jammer.HasValue) { command.Chair.Number = jammer.Value; command.Chair.SecondsOwed = state.Penalties.Any(x => x.Number == command.Chair.Number) ? state.Penalties.Where(x => x.Number == command.Chair.Number).Sum(x => x.SecondsOwed) : command.Chair.SecondsOwed; } var otherTeam = command.Chair.Team == "left" ? "right" : "left"; var otherJammerInBox = state.PenaltyBox.SingleOrDefault(x => x.Team == otherTeam && x.IsJammer); if (otherJammerInBox != null) { var timeRemaining = Math.Max(otherJammerInBox.SecondsOwed - (int)Math.Round(otherJammerInBox.StopWatch.Elapsed.TotalSeconds), 0); if (timeRemaining < command.Chair.SecondsOwed) { otherJammerInBox.SecondsOwed -= timeRemaining; command.Chair.SecondsOwed -= timeRemaining; } else { otherJammerInBox.SecondsOwed -= command.Chair.SecondsOwed; command.Chair.SecondsOwed = 0; } response.AddEvent(new ChairUpdatedEvent(command.BoutId, otherJammerInBox), Audiences.Bout(command.BoutId)); } } state.PenaltyBox.Add(command.Chair); response.AddEvent(new ChairUpdatedEvent(command.BoutId, command.Chair), Audiences.Bout(command.BoutId)); return(response); }
void FillCombos(bool refresh = false) { if (!refresh) { Audiences = WebsiteDataService.Audiences.Select(o => new SelectListItem { Value = ((Audience)o.Value).ToString(), Text = o.Name, Model = o }).ToObservableCollection(); Audiences.RemoveAt(0); Audiences.Insert(0, new SelectListItem { Value = Audience.None.ToString(), Text = DEFAULT_AUDIENCE_SELECT_TEXT, Model = null }); Years = BaseDataService.ReportingYears.Select(o => new SelectListItem { Value = o, Text = o, Model = o }).ToObservableCollection(); Years.RemoveAt(0); Years.Insert(0, new SelectListItem { Value = string.Empty, Text = DEFAULT_YEAR_SELECT_TEXT, Model = null }); Quarters = BaseDataService.ReportingQuarters.Select(o => new SelectListItem { Value = o.Id, Text = o.Text, Model = o }).ToObservableCollection(); Quarters.RemoveAt(0); Quarters.Insert(0, new SelectListItem { Value = -1, Text = DEFAULT_QUARTER_SELECT_TEXT, Model = null }); RegionContextItems = new ObservableCollection <SelectListItem>(); // RegionContextItems.Insert( 0, new SelectListItem { Text= "Please Select Region", Value = null, Model = null } ); RegionContextItems.Add(new SelectListItem { Text = Inflector.Titleize(typeof(HospitalServiceArea).Name), Value = typeof(HospitalServiceArea).Name, Model = null }); RegionContextItems.Add(new SelectListItem { Text = Inflector.Titleize(typeof(HealthReferralRegion).Name), Value = typeof(HealthReferralRegion).Name, Model = null }); RegionContextItems.Add(new SelectListItem { Text = Inflector.Titleize(typeof(CustomRegion).Name), Value = typeof(CustomRegion).Name, Model = null }); } StateContextItems = new ObservableCollection <SelectListItem>(); // StateContextItems.Insert(0, new SelectListItem { Text = "Please Select State(s)", Value = null, Model = null }); StateContextItems = WebsiteDataService.GetStates().ToObservableCollection(); // else // StateContextItems = // WebsiteDataService.GetApplicableReportingStates( // ManageViewModel.WebsiteViewModel.Website.StateContext.ToArray()).ToObservableCollection(); }
public override int GetHashCode() { unchecked { var hashCode = (Audiences != null ? Audiences.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (Issuer != null ? Issuer.GetHashCode() : 0); hashCode = (hashCode * 397) ^ CreationTime.GetHashCode(); hashCode = (hashCode * 397) ^ Lifetime; hashCode = (hashCode * 397) ^ (Type != null ? Type.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (ClientId != null ? ClientId.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (int)AccessTokenType; hashCode = (hashCode * 397) ^ (Claims != null ? Claims.GetHashCode() : 0); hashCode = (hashCode * 397) ^ Version; return(hashCode); } }
public void AssignFrom(ReportManifest manifest) { //Filters = new List<Filter>(); Columns = Columns ?? new List <ReportColumn>(); WebsitePages = WebsitePages ?? new List <ReportWebsitePage>(); ComparisonKeyIcons = ComparisonKeyIcons ?? new List <ComparisonKeyIconSet>(); _rptfilters = _rptfilters ?? new List <RptFilter>(); Audiences = Audiences ?? new List <Audience>(); Columns.Clear(); WebsitePages.Clear(); ComparisonKeyIcons.Clear(); _rptfilters.Clear(); Audiences.Clear(); ComparisonKeyIcons.AddRange(manifest.ToComparisonKeyIconSet(manifest.IconSets, this).ToList()); Audiences.AddRange(manifest.Audiences.Select(a => a.AudienceType).ToList()); Category = manifest.Category; IsTrending = manifest.IsTrending; Datasets = manifest.Datasets.Select(d => d.Name).ToList(); manifest.Columns.ForEach(col => new ReportColumn(this, col.Name) { IsMeasure = col.IsMeasure, MeasureCode = col.MeasureCode, IsIncluded = true }); manifest.WebsitePages.ForEach(wp => new ReportWebsitePage(this, wp)); Name = manifest.Name; ReportAttributes = manifest.ReportAttributes; SourceTemplate = manifest; Description = !string.IsNullOrWhiteSpace(manifest.Description) ? manifest.Description.TrimStart().TrimEnd() : null; Filter = CandidateFilters.ToReportFilter(); RequiresCmsProviderId = manifest.RequiresCmsProviderId; RequiresCostToChargeRatio = manifest.RequiresCostToChargeRatio; ReportType = manifest.Name; ShowInterpretationText = manifest.ShowInterpretationText; InterpretationText = !string.IsNullOrWhiteSpace(manifest.InterpretationText) ? manifest.InterpretationText.TrimStart().TrimEnd() : null; Footnote = !string.IsNullOrWhiteSpace(manifest.Footer) ? manifest.Footer.TrimStart().TrimEnd() : null; ReportOutputSql = !string.IsNullOrWhiteSpace(manifest.ReportOutputSql) ? manifest.ReportOutputSql.TrimStart().TrimEnd() : null; OutputFileName = !string.IsNullOrWhiteSpace(manifest.OutputFileName) ? manifest.OutputFileName.TrimStart().TrimEnd() : null; OutputJsNamespace = !string.IsNullOrWhiteSpace(manifest.OutputJsNamespace) ? manifest.OutputJsNamespace.TrimStart().TrimEnd() : null; _rptfilters.AddRange(RptFilter.FromFilterList(manifest.Filters, this).ToList()); LastReportManifestUpdate = manifest.FileLastModifiedDate; }
public IHttpActionResult RefreshToken([FromBody] Aparte.Credentials.UserToken userToken) { var accessToken = AsymmetricEncryption.Decrypt(userToken.AccessToken, AuthenticationServer.PRIVATE_KEY); var refreshToken = AsymmetricEncryption.Decrypt(userToken.RefreshToken, AuthenticationServer.PRIVATE_KEY); var context = new ApiContext(); var apiSession = Aparte.WebApi.RefreshApiSession.Execute(context, userToken.PKSystemUser, accessToken, refreshToken); var token = new JWEAsymmetric(); token.AsymmetricKey = Audiences.Item(KeyFile.JEDIX_WIN_CLIENT_NAME).PublicKey; token.SetExpiry(apiSession.TokenExpiry); token.AddClaim(JWTConstant.PK_SYSTEM_USER, apiSession.PKSystemUser.ToString()); token.AddClaim(JWTConstant.ACCESS_TOKEN, apiSession.AccessToken.ToString()); var encryptedToken = token.SerializeToBase64UrlString(); UserList.Add(apiSession.PKSystemUser, apiSession.UserName, apiSession.UserCode, apiSession.AccessToken, apiSession.RefreshToken, apiSession.TokenExpiry); return(Ok <string>(encryptedToken)); }
public override ICommandResponse Handle(UpdatePenaltyCommand command) { var state = _boutRunner.GetBoutState(command.BoutId); var target = state.Penalties.SingleOrDefault(x => x.Id == command.Penalty.Id); if (target == null) { throw new NoSuchPenaltyException(command.Penalty.Id); } var source = command.Penalty; target.Team = source.Team; if (target.Number != source.Number) { // If the penalty is moving off of a skater in the box, remove time // If it's moving to a skater in the box, add time var skaterInBox = state.PenaltyBox.SingleOrDefault(x => x.Number == target.Number); if (skaterInBox != null) { skaterInBox.SecondsOwed -= 30; } target.Number = source.Number; skaterInBox = state.PenaltyBox.SingleOrDefault(x => x.Number == target.Number); if (skaterInBox != null) { skaterInBox.SecondsOwed += 30; } } target.SecondsOwed = source.SecondsOwed; target.PenaltyCode = source.PenaltyCode; target.Period = source.Period; target.JamNumber = source.JamNumber; target.GameClock = source.GameClock; var response = new CommandResponse(); response.AddEvent(new PenaltyUpdatedEvent(command.BoutId, target), Audiences.Bout(command.BoutId)); return(response); }
public Audiences AddAudience(string name) { var audienceId = Guid.NewGuid(); var key = new byte[32]; RandomNumberGenerator.Create().GetBytes(key); var base64Secret = Convert.ToBase64String(key); Audiences a = new Audiences { Id = audienceId, Name = name, Base64Secret = base64Secret }; db.Audiences.Add(a); db.SaveChanges(); return(a); }
public IActionResult Authenticate(string name, string password) { // 此处需补充用户校验与用户具体信息获取 var user = new UserProviderDto(name, password); var tokenHandler = new JwtSecurityTokenHandler(); var key = Encoding.ASCII.GetBytes(Const.SecurityKey); var tokenDescriptor = new SecurityTokenDescriptor { Audience = Audiences.UpdateAudience(user.Name), Subject = user.GetClaimsIdentity(), Expires = DateTime.UtcNow.AddDays(0.5), SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature) }; var token = tokenHandler.CreateToken(tokenDescriptor); var tokenString = tokenHandler.WriteToken(token); return(Ok(new { access_token = tokenString })); }
public IHttpActionResult RequestToken() { var content = Request.Content.ReadAsStringAsync().Result; dynamic json = JsonConvert.DeserializeObject(content); long pkSystemUser = json.PKSystemUser.Value; string clientId = json.ClientId.Value; string publicKey = json.PublicKey; if (!Audiences.Exists(clientId)) { var key = Aparte.Security.Cryptography.SymmetricKey.GenerateSymmetricKey(); try { Audiences.Add(clientId, publicKey, key); } catch (Exception ex) { } } var encryptedToken = ProduceToken(pkSystemUser, clientId, new ApiContext()); return(Ok <string>(encryptedToken)); }
public override ICommandResponse Handle(ReleaseSkaterCommand command) { var response = new CommandResponse(); var state = _boutRunner.GetBoutState(command.BoutId); var sit = state.PenaltyBox.SingleOrDefault(x => x.Id == command.ChairId); if (sit == null) { return(response); } var timeServed = sit.SecondsOwed; var penalties = state.Penalties.Where(x => x.Team == sit.Team && x.Number == sit.Number).ToList(); while (timeServed > 0 && penalties.Any()) { var penalty = penalties.First(); if (timeServed > penalty.SecondsOwed) { timeServed -= penalty.SecondsOwed; penalty.SecondsOwed = 0; penalties.Remove(penalty); } else { penalty.SecondsOwed -= timeServed; timeServed = 0; } response.AddEvent(new PenaltyUpdatedEvent(command.BoutId, penalty), Audiences.Bout(command.BoutId)); } state.PenaltyBox.Remove(sit); response.AddEvent(new ChairRemovedEvent(command.BoutId, command.ChairId), Audiences.Bout(command.BoutId)); return(response); }
/// <summary> /// Serialize and sign the authentication ticket. /// </summary> /// <returns>The serialized and signed ticket.</returns> public Task <string> SerializeTicketAsync() { if (SecurityTokenHandler == null) { return(Task.FromResult <string>(null)); } // Work around a bug introduced in System.IdentityModel.Tokens for ASP.NET 5. // See https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/issues/133 var identity = (ClaimsIdentity)AuthenticationTicket.Principal.Identity; for (var actor = identity.Actor; actor != null; actor = actor.Actor) { actor.BootstrapContext = new JwtSecurityToken(claims: actor.Claims); } // When creating an identity token intended for a single audience, it's usually better // to format the "aud" claim as a string, but CreateToken doesn't support multiple audiences: // to work around this limitation, audience is initialized with a single resource and // JwtPayload.Aud is replaced with an array containing the multiple resources if necessary. // See http://openid.net/specs/openid-connect-core-1_0.html#IDToken var token = SecurityTokenHandler.CreateToken( subject: identity, issuer: Issuer, audience: Audiences.ElementAtOrDefault(0), signatureProvider: SignatureProvider, signingCredentials: SigningCredentials, notBefore: AuthenticationTicket.Properties.IssuedUtc.Value.UtcDateTime, expires: AuthenticationTicket.Properties.ExpiresUtc.Value.UtcDateTime); if (Audiences.Count() > 1) { token.Payload[JwtRegisteredClaimNames.Aud] = Audiences.ToArray(); } return(Task.FromResult(SecurityTokenHandler.WriteToken(token))); }
public override ICommandResponse Handle(StartJamCommand command) { var response = new CommandResponse(); var bout = _boutDataService.Load(command.BoutId); var state = _boutRunnerService.GetBoutState(command.BoutId); //State must be in lineup if (state.Phase != BoutPhase.Lineup) { throw new InvalidBoutPhaseException(state.Phase); } //There must be time left on the game clock var elapsed = state.GameClock.Elapsed.TotalSeconds; if (elapsed > bout.RuleSet.PeriodDurationSeconds) { response.AddEvent( MessageBaseEvent.Error($"Call to start jam came too late. Elapsed: {state.GameClock.Elapsed.TotalSeconds}"), command.Originator); return(response); } state.Phase = BoutPhase.Jam; state.JamStart = DateTime.Now; state.GameClock.Start(); state.PenaltyBox.ForEach(x => { x.StopWatch.Start(); response.AddEvent(new ChairUpdatedEvent(state.BoutId, x), Audiences.Bout(state.BoutId)); }); response.AddEvent(new BoutStateUpdatedEvent(state), Audiences.Bout(state.BoutId)); return(response); }
public Audiences GetAudiences() { OAuthResponse response = null; List<Audience> audiences = new List<Audience>(); Audiences audiencesResponse = new Audiences(); try { response = _manager.GetOAuthResponse("GET", "audience/audiences"); if (response.ErrorFlag) throw response.Error; else { var repeatFlag = true; while (repeatFlag) { Audiences s = JsonConvert.DeserializeObject<Audiences>(response.ResponseString); repeatFlag = (s.next != null); audiences.AddRange(s.audiences); } } audiencesResponse.audiences = audiences.ToArray(); } catch (Exception ex) { audiencesResponse.ErrorFlag = true; audiencesResponse.Error = ex; if (response != null) audiencesResponse.ErrorMessage = response.ResponseString; } return audiencesResponse; }