public ActionResult <JObject> Delete(string id)
        {
            return(WrapWithAuthorizationCheck(() =>
            {
                try
                {
                    TweezersObject objectMetadata =
                        TweezersSchemaFactory.Find(CollectionName, WithInternalObjects, true);
                    JObject role = objectMetadata.GetById(TweezersSchemaFactory.DatabaseProxy, id, true);
                    if (role == null)
                    {
                        return TweezersOk(TweezersGeneralResponse.Create("Deleted"));
                    }

                    if (role["isBuiltInRole"]?.ToString().ToLower() == "true")
                    {
                        return TweezersBadRequest("Cannot delete a built-in role");
                    }

                    long count = IdentityManager.GetUsersByRoleId(id).Count;
                    if (count > 0)
                    {
                        return TweezersBadRequest(
                            $"Role is being used by {count} users, please change their role first.");
                    }

                    bool deleted = objectMetadata.Delete(TweezersSchemaFactory.DatabaseProxy, id);
                    return TweezersOk();
                }
                catch (TweezersValidationException e)
                {
                    return TweezersBadRequest(e.Message);
                }
            }, "Delete", DefaultPermission.Edit, CollectionName));
        }
        private ActionResult DoChangePassword(JObject user, ChangePasswordRequest changePasswordRequest)
        {
            JObject passwordChange = new JObject()
            {
                ["passwordHash"] = Hash.Create(changePasswordRequest.NewPassword)
            };

            try
            {
                TweezersObject usersObjectMetadata =
                    TweezersSchemaFactory.Find(IdentityManager.UsersCollectionName, true);
                usersObjectMetadata.Update(TweezersSchemaFactory.DatabaseProxy, user["_id"].ToString(),
                                           passwordChange);

                return(TweezersOk(TweezersGeneralResponse.Create("OK")));
            }
            catch
            {
                return(TweezersBadRequest("Could not update password"));
            }
        }
Example #3
0
        protected ActionResult <JObject> Delete(string collection, string id,
                                                DefaultPermission?minimalPermission = null)
        {
            return(WrapWithAuthorizationCheck(() =>
            {
                try
                {
                    TweezersObject objectMetadata = TweezersSchemaFactory.Find(collection, WithInternalObjects);
                    if (objectMetadata.GetById(TweezersSchemaFactory.DatabaseProxy, id) == null)
                    {
                        return TweezersOk(TweezersGeneralResponse.Create("Deleted"));
                    }

                    bool deleted = objectMetadata.Delete(TweezersSchemaFactory.DatabaseProxy, id);
                    return TweezersOk();
                }
                catch (TweezersValidationException e)
                {
                    return TweezersBadRequest(e.Message);
                }
            }, "Delete", minimalPermission ?? DefaultPermission.Edit, collection));
        }
Example #4
0
 protected ActionResult TweezersOk(object obj = null)
 {
     return(StatusCode(200, ResolveByContract(obj ?? TweezersGeneralResponse.Create("Ok"))));
 }