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));
            }
        }
Exemple #3
0
        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));
        }
Exemple #4
0
        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));
        }