public Task <TokenInfo> CreateToken(UserInfo payload) { var accessToken = GetAccessToken(payload); var token = TokenInfo.Create( accessToken, GetRefreshToken(accessToken) ); return(Task.FromResult(token)); }
public async Task <TokenInfo> GetTokenInfoAsync(ApiKeyContext apiContext) { using (var session = _sessionFactory.OpenStatelessSession()) { var columns = await session.CreateSQLQuery(ColumnsSql) .ListAsync <string>(CancellationToken.None); string edOrgIds = string.Join(",", apiContext.EducationOrganizationIds); string whereClause = string.Join(" or ", columns.Select(x => $"{x} in ({edOrgIds})")); var educationOrganizationIdentifiers = await session.CreateSQLQuery(string.Format(EdOrgIdentifiersSql, whereClause)) .SetResultTransformer(Transformers.AliasToBean <EducationOrganizationIdentifiers>()) .ListAsync <EducationOrganizationIdentifiers>(CancellationToken.None); return(TokenInfo.Create(apiContext, educationOrganizationIdentifiers)); } }
public async Task <ActionResult> AddStar(Star star) { star.Planets.Clear(); await service .AddStarAsync(star) .ConfigureAwait(false); var info = TokenInfo.Create( star.Id, Enumerable.Empty <string>()); var token = await this.authenticator .GenerateTokenAsync(info) .ConfigureAwait(false); Response.Cookies.Append("token", token); return(CreatedAtRoute(nameof(GetStar), new { id = star.Id }, star)); }
public async Task <ActionResult> AddPlanet(Planet planet) { if (!Request.Cookies.TryGetValue("token", out var token)) { return(Unauthorized(Error.NotAllowed)); } TokenInfo info; try { info = await this.authenticator .ExtractTokenInfoAsync(token) .ConfigureAwait(false); } catch { Response.Cookies.Delete("token"); return(Unauthorized(Error.NotAllowed)); } if (planet.StarId == null) { return(BadRequest(Error.Create("incorrect star id"))); } if (info.Owner != planet.StarId) { return(Unauthorized(Error.NotAllowed)); } var star = await service .GetStarAsync(planet.StarId) .ConfigureAwait(false); if (star == null) { return(NotFound(Error.NotAllowed)); } if (star.Planets.Count >= MaxPlanetsCount) { return(BadRequest(Error.Create("maximum planets count"))); } await service .AddPlanetAsync(planet, star) .ConfigureAwait(false); var newInfo = TokenInfo.Create( star.Id, star.Planets.Select(Hasher.Hash)); var newToken = await this.authenticator .GenerateTokenAsync(newInfo) .ConfigureAwait(false); Response.Cookies.Append("token", newToken); return(CreatedAtRoute(nameof(GetPlanet), new { id = planet.Id }, planet)); }