示例#1
0
        public ClientVm GetMatched(TokenRequest tokenRequest)
        {
            var grantTypeId  = (int)Enum.Parse <GrantType>(tokenRequest.GrantType);
            var hashedSecret = _cryptoRepository.Hash(tokenRequest.ClientSecret);

            return(_passportContext.Set <Client>()
                   .Where(x => x.Code == tokenRequest.ClientId && x.GrantTypeId == grantTypeId && x.ClientSecrets.Any(y => y.Secret == hashedSecret))
                   .Select(x => new ClientVm
            {
                ClientId = x.Code,
                Name = x.Name,
                GrantTypeId = x.GrantTypeId,
                AllowedScopes = x.ClientScopes
                                .Select(y => y.Scope.Name)
                                .ToList()
            })
                   .FirstOrDefault());
        }
示例#2
0
        public void Create(ClientVm clientVm)
        {
            var client = _passportContext.Set <Client>()
                         .FirstOrDefault(x => x.Code == clientVm.ClientId);

            _passportContext.Set <ClientSecret>()
            .DeleteMany(x => x.ClientId == client.Id);

            _passportContext.SaveChanges();

            var hashedSecret = _cryptoRepository.Hash(clientVm.Secret);

            var clientSecret = new ClientSecret
            {
                ClientId = client.Id,
                Secret   = hashedSecret
            };

            _passportContext.Set <ClientSecret>().Add(clientSecret);
            _passportContext.SaveChanges();
        }