示例#1
0
        /// <summary>
        /// Update the already existing resource access claim
        /// </summary>
        /// <param name="id">Resource Access Claim Id</param>
        /// <param name="access">Client Resource Claims Access</param>
        /// <returns><![CDATA[ (bool IsSuccess, String Message) ]]></returns>
        public (bool IsSuccess, String Message) UpdateClaimAccess(int id, ClientResourceClaimsAccess access)
        {
            try
            {
                var dbClaim = ClientDataAccess.ClientResourceAccessClaim.GetById(id);
                if (dbClaim == null)
                {
                    return(false, ResourceManagerMessages.Error.CLAIM_UPDATE_NOT_FOUND);
                }

                dbClaim.Access = access;

                ClientDataAccess.ClientResourceAccessClaim.Update(dbClaim);
                ClientDataAccess.Save();

                return(true, ResourceManagerMessages.Success.CLAIM_UPDATED);
            }
            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;
            }
        }
示例#2
0
        /// <summary>
        /// Delete a specific resource access claim out of the database.
        /// </summary>
        /// <param name="id">Client Id</param>
        /// <returns></returns>
        public (bool IsSuccess, String Message) DeleteClaim(int id)
        {
            var dbView = ClientDataAccess.ClientResourceAccessClaim.GetById(id);

            if (dbView == null)
            {
                return(false, ResourceManagerMessages.Error.CLAIM_NOT_FOUND);
            }

            ClientDataAccess.ClientResourceAccessClaim.Delete(dbView);
            ClientDataAccess.Save();

            return(true, ResourceManagerMessages.Success.CLAIM_DELETED);
        }
示例#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>
        /// Add new claim the an existing client resource access
        /// </summary>
        /// <param name="resourceId">Client Resource Acces Id</param>
        /// <param name="claimId">Resource Claim Id</param>
        /// <param name="access">Client Resource Claims Access</param>
        /// <returns><![CDATA[ (ClientResourceAccessClaimVm Claim, bool IsSuccess, string Message) ]]></returns>
        public (ClientResourceAccessClaimVm Claim, bool IsSuccess, string Message) AddClaim(int resourceId, int claimId, ClientResourceClaimsAccess access)
        {
            try
            {
                // check to make sure that the client resource does exists inside the client.
                var dbResAccess = ClientDataAccess.ClientResourceAccess.GetById(resourceId);
                if (dbResAccess == null)
                {
                    return(null, false, ResourceManagerMessages.Error.RESOURCE_NOT_FOUND);
                }

                var dbClaimCheck = ClientDataAccess.ClientResourceAccessClaim.Find(f => f.ClientResourceAccessId == resourceId && f.ResourceClaimId == claimId);
                if (dbClaimCheck != null)
                {
                    return(null, false, ResourceManagerMessages.Error.CLAIM_ADD_ALREADY_EXISTS);
                }

                var dbClaim = new ClientResourceAccessClaim()
                {
                    ResourceClaimId        = claimId,
                    ClientResourceAccessId = dbResAccess.Id,
                    Access = access,
                };

                ClientDataAccess.ClientResourceAccessClaim.Create(dbClaim);
                ClientDataAccess.Save();

                return(new ClientResourceAccessClaimVm(dbClaim), 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;
            }
        }
示例#5
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;
            }
        }
示例#6
0
        /// <summary>
        /// Update the already existing key
        /// </summary>
        /// <param name="id">Client Key Id</param>
        /// <param name="status">Client Key Status</param>
        /// <returns><![CDATA[ (bool IsSuccess, String Message) ]]></returns>
        public (bool IsSuccess, String Message) UpdateKeyStatus(int id, ClientKeyStatus status)
        {
            try
            {
                // Check if the record exist in the database.
                var dbView = ClientDataAccess.ClientKey.Find(f => f.Id == id);
                if (dbView == null)
                {
                    return(false, ResourceManagerMessages.Error.CLIENT_KEY_NOT_FOUND);
                }

                // Update the existing record from the database.
                dbView.Status     = status;
                dbView.UpdateDate = DateTime.UtcNow;

                ClientDataAccess.ClientKey.Update(dbView);
                ClientDataAccess.Save();

                return(true, ResourceManagerMessages.Success.CLAIM_KEY_UPDATED);
            }
            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;
            }
        }
示例#7
0
        /// <summary>
        /// Create a new resource access for the client.
        /// </summary>
        /// <param name="clientId">Client Id</param>
        /// <param name="resourceId">Resouce Id</param>
        /// <param name="resourceValue">Resource Value</param>
        /// <param name="status">Client Resource Access Status</param>
        /// <param name="claims">List of Claim Ids</param>
        /// <returns><![CDATA[ (ClientResourceAccessVm Resource, bool IsSuccess, String Message) ]]></returns>
        public (ClientResourceAccessVm Resource, bool IsSuccess, String Message) CreateResourceAccess(int clientId, int resourceId, int resourceValue, ClientResourceAccessStatus status, int[] claims = null)
        {
            try
            {
                // Check to make sure that the client does exists in the database.
                var dbClient = ClientDataAccess.Client.Find(f => f.Id == clientId);
                if (dbClient == null)
                {
                    return(null, false, ResourceManagerMessages.Error.CLIENT_NOT_FOUND);
                }

                // Check to make sure that the resource manager does exists in the database.
                var dbRes = ResourceDataAccess.ResourceManager.Find(f => f.Id == resourceId);
                if (dbRes == null)
                {
                    return(null, false, ResourceManagerMessages.Error.RESOURCE_NOT_FOUND);
                }

                // Check to make sure that the resource access with the same resource value does not exists.
                var dbResVal = ClientDataAccess.ClientResourceAccess.Find(f => f.ResourceId == resourceId && f.ResourceValue == resourceValue);
                if (dbResVal != null)
                {
                    return(null, false, ResourceManagerMessages.Error.RESOURCE_ALREADY_EXISTS);
                }


                /* --------------------------------------------------------
                 * If the caller passesa list of claim Ids
                 * check to see if all the claim ids exists in the database
                 * before creating a new record in the database.
                 * --------------------------------------------------------- */
                if (claims != null && claims.Length != 0)
                {
                    var hasInvalidClaim = ResourceDataAccess.ResourceClaim.Any(f => f.ResourceId == resourceId && !claims.Contains(f.Id));
                    if (hasInvalidClaim)
                    {
                        return(null, false, ResourceManagerMessages.Error.CLAIM_UPDATE_NOT_FOUND);
                    }
                }

                var dbResAccess = (new ClientResourceAccessVm()
                {
                    Status = status
                }).ToEntityCreate(clientId, resourceId, resourceValue);
                dbResAccess = ClientDataAccess.ClientResourceAccess.Create(dbResAccess);

                if (claims != null)
                {
                    foreach (var id in claims)
                    {
                        ClientDataAccess.ClientResourceAccessClaim.Create(
                            new ClientResourceAccessClaim()
                        {
                            ResourceClaimId        = id,
                            ClientResourceAccessId = dbResAccess.Id,
                            Access = ClientResourceClaimsAccess.Allow
                        }
                            );
                    }
                }

                ClientDataAccess.Save();

                var resAccess = new ClientResourceAccessVm(dbResAccess);
                return(resAccess, true, ResourceManagerMessages.Success.ACCESS_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;
            }
        }