예제 #1
0
        public TokenResponse CreateToken(ClientKeyVm key)
        {
            // Grab all the resource access of the client
            // we'll be using that to create claims to be passed to our
            // JWT generator.
            var dataAccess = ResourceUnitOfWork.ClientSvc.GetClientResourceAccess(key.ClientId);

            if (dataAccess == null)
            {
                return(null);
            }

            JwtHelper tokenizer = new JwtHelper(APIToken);

            var identity = new ClaimsIdentity();

            identity.AddClaim(new Claim(ClaimTypes.Name, key.APIKey));

            foreach (var access in dataAccess)
            {
                identity.AddClaim(new Claim(SharedClaimType.DataAccess, access.ResourceId.ToString()));
            }

            var token = tokenizer.GenerateToken(identity);

            return(new TokenResponse()
            {
                ExpireDate = token.ExpireDate,
                Token = token.Token
            });
        }
예제 #2
0
        public void CreateClient()
        {
            var res = ClientSvc.CreateClient(0, clientName, ClientKeyStatus.Pending);

            _clientVm    = res.Client;
            _clientKeyVm = res.Key;

            Assert.IsTrue(res.IsSuccess);
        }
예제 #3
0
        /*TODO : MAKE SURE THAT ALL THE TRANSACTION ON SET ARE LOGGED IN A TABLE*/

        /// <summary>
        /// Create a new client record.
        /// </summary>
        /// <param name="ownerId">Owner Id</param>
        /// <param name="name">Client Name</param>
        /// <param name="status">Client Status</param>
        /// <returns><![CDATA[ (ClientVm Client, ClientKeyVm Key, bool IsSuccess, String Message) ]]></returns>
        public (ClientVm Client, ClientKeyVm Key, bool IsSuccess, String Message) CreateClient(int ownerId, string name, ClientKeyStatus status)
        {
            try
            {
                var dbCheck = ClientDataAccess.Client.Find(f => f.OwnerId == ownerId &&
                                                           f.Name.ToLower() == name.ToLower());
                if (dbCheck != null)
                {
                    return(null, null, false, ResourceManagerMessages.Error.CLIENT_ADD_ALREADY_EXISTS);
                }

                // Create the Client Resource
                var dbView = (new ClientVm()
                {
                    Name = name
                }).ToEntityCreate(ownerId);
                dbView = ClientDataAccess.Client.Create(dbView);

                // Generate a new Client Key
                var dbKey = (new ClientKeyVm()
                {
                    Status = status
                }).ToEntityCreate(dbView.Id);
                dbKey = ClientDataAccess.ClientKey.Create(dbKey);

                ClientDataAccess.Save();

                var client = new ClientVm(dbView);
                var key    = new ClientKeyVm(dbKey);

                return(client, key, true, ResourceManagerMessages.Success.CLAIM_CREATED);
            }
            catch (DbEntityValidationException ex)
            {
#if (DEBUG)
                // for debuging entity framework
                foreach (var error in ex.EntityValidationErrors.SelectMany(valError => valError.ValidationErrors))
                {
                    Console.WriteLine(error.ErrorMessage);
                }
#endif
                throw;
            }
            catch
            {
                throw;
            }
        }
예제 #4
0
        /// <summary>
        /// Create a new key for the already existing client
        /// </summary>
        /// <param name="id">Client Id</param>
        /// <param name="status">Client Key Status</param>
        /// <returns><![CDATA[ (ClientKeyVm key, bool IsSuccess, String Message) ]]></returns>
        public (ClientKeyVm key, bool IsSuccess, String Message) CreateKey(int id, ClientKeyStatus status)
        {
            try
            {
                var dbCheck = ClientDataAccess.Client.Find(f => f.Id == id);
                if (dbCheck == null)
                {
                    return(null, false, ResourceManagerMessages.Error.CLIENT_NOT_FOUND);
                }

                // Generate a new Client Key
                var dbKey = (new ClientKeyVm()
                {
                    Status = status
                }).ToEntityCreate(id);
                dbKey = ClientDataAccess.ClientKey.Create(dbKey);

                ClientDataAccess.Save();

                var key = new ClientKeyVm(dbKey);

                return(key, true, ResourceManagerMessages.Success.CLAIM_KEY_CREATED);
            }
            catch (DbEntityValidationException ex)
            {
#if (DEBUG)
                // for debugging entity framework
                foreach (var error in ex.EntityValidationErrors.SelectMany(valError => valError.ValidationErrors))
                {
                    Console.WriteLine(error.ErrorMessage);
                }
#endif
                throw;
            }
            catch
            {
                throw;
            }
        }