From 0ef1b2dcffd78c6ee9f76e50687d70618cb6bcea Mon Sep 17 00:00:00 2001 From: Alex Snast Date: Mon, 20 Apr 2020 14:28:00 +0300 Subject: [PATCH] entc/gen: adding DenyMutationOperation privacy rule helper (#441) Signed-off-by: Alex Snast --- entc/gen/internal/bindata.go | 4 ++-- entc/gen/template/privacy.tmpl | 10 ++++++++++ entc/integration/config/ent/privacy/privacy.go | 10 ++++++++++ entc/integration/customid/ent/privacy/privacy.go | 10 ++++++++++ entc/integration/ent/privacy/privacy.go | 10 ++++++++++ entc/integration/gremlin/ent/privacy/privacy.go | 10 ++++++++++ entc/integration/hooks/ent/privacy/privacy.go | 10 ++++++++++ entc/integration/idtype/ent/privacy/privacy.go | 10 ++++++++++ entc/integration/json/ent/privacy/privacy.go | 10 ++++++++++ entc/integration/migrate/entv1/privacy/privacy.go | 10 ++++++++++ entc/integration/migrate/entv2/privacy/privacy.go | 10 ++++++++++ entc/integration/privacy/ent/privacy/privacy.go | 10 ++++++++++ entc/integration/template/ent/privacy/privacy.go | 10 ++++++++++ examples/edgeindex/ent/privacy/privacy.go | 10 ++++++++++ examples/entcpkg/ent/privacy/privacy.go | 10 ++++++++++ examples/m2m2types/ent/privacy/privacy.go | 10 ++++++++++ examples/m2mbidi/ent/privacy/privacy.go | 10 ++++++++++ examples/m2mrecur/ent/privacy/privacy.go | 10 ++++++++++ examples/o2m2types/ent/privacy/privacy.go | 10 ++++++++++ examples/o2mrecur/ent/privacy/privacy.go | 10 ++++++++++ examples/o2o2types/ent/privacy/privacy.go | 10 ++++++++++ examples/o2obidi/ent/privacy/privacy.go | 10 ++++++++++ examples/o2orecur/ent/privacy/privacy.go | 10 ++++++++++ examples/start/ent/privacy/privacy.go | 10 ++++++++++ examples/traversal/ent/privacy/privacy.go | 10 ++++++++++ 25 files changed, 242 insertions(+), 2 deletions(-) diff --git a/entc/gen/internal/bindata.go b/entc/gen/internal/bindata.go index 835452da4..ade6d9e1a 100644 --- a/entc/gen/internal/bindata.go +++ b/entc/gen/internal/bindata.go @@ -1025,7 +1025,7 @@ func templatePredicateTmpl() (*asset, error) { return a, nil } -var _templatePrivacyTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x58\x41\x6f\xdb\x38\x13\x3d\x4b\xbf\x62\x20\x38\x80\xdd\xcf\x95\xfb\xf5\xb6\x29\x72\x28\xda\x14\x28\xb0\x1b\x74\xb7\xbd\x15\xc5\x82\x11\x47\x36\x11\x89\x54\x48\x2a\x8e\xa1\xea\xbf\x2f\x86\x12\x65\x4a\x8e\xdd\x74\x93\x02\x7b\x0a\x4c\x0e\x67\x1e\x67\xde\x9b\xa1\xd2\x34\xab\x17\xf1\x3b\x55\xed\xb4\x58\x6f\x2c\xbc\x7e\xf5\xff\xdf\x5e\x56\x1a\x0d\x4a\x0b\x1f\x58\x86\xd7\x4a\xdd\xc0\x47\x99\xa5\xf0\xb6\x28\xc0\x19\x19\xa0\x7d\x7d\x87\x3c\x8d\xbf\x6c\x84\x01\xa3\x6a\x9d\x21\x64\x8a\x23\x08\x03\x85\xc8\x50\x1a\xe4\x50\x4b\x8e\x1a\xec\x06\xe1\x6d\xc5\xb2\x0d\xc2\xeb\xf4\x95\xdf\x85\x5c\xd5\x92\xc7\x42\xba\xfd\xdf\x3f\xbe\xbb\xbc\xfa\x7c\x09\xb9\x28\x10\xfa\x35\xad\x94\x05\x2e\x34\x66\x56\xe9\x1d\xa8\x1c\x6c\x10\xcc\x6a\xc4\x34\x7e\xb1\x6a\xdb\x38\x6e\x1a\xe0\x98\x0b\x89\x90\x54\x5a\xdc\xb1\x6c\x97\x40\xb7\xfe\x12\xb6\xc2\x6e\x00\xef\x2d\x4a\x0e\x33\x48\x3e\xb1\xec\x86\xad\x31\x09\x2c\x5f\xb6\x6d\x1c\x35\x0d\x58\x2c\xab\x82\x59\x84\x64\x83\x8c\xa3\x4e\x20\x25\x2f\x4d\x03\x74\x96\xfc\x89\xb2\x52\xda\x42\xd2\x34\x30\x4b\xdf\x29\x99\x8b\x75\xda\x3b\x84\xb6\x4d\x1c\x90\x59\x75\xb3\x86\xf3\x0b\xb8\x66\x06\x1f\xb2\x8a\xe3\x3b\xa6\x61\x1e\x47\xab\x15\x65\x54\x6d\xa1\x64\x3b\xb8\x46\xd0\x68\x6b\x2d\x91\xc3\xf5\x0e\x74\x5d\xa0\x01\xab\x40\x48\x2e\x32\xc2\x64\x37\xcc\xba\xac\x54\xaa\x10\xd9\xce\x1d\xc7\x3b\x56\xd4\xcc\x0a\x25\xc1\x6c\x54\x5d\x70\xb0\xa8\x4b\x21\xc9\xde\x5d\x9b\x49\x60\x2e\x04\xc7\x4c\x18\xa1\x64\x1a\x47\x5d\xcc\x0b\x40\xad\x95\x36\xe9\x15\x6e\xe7\x09\x4a\xbb\xea\xd3\x71\xde\x9f\x20\x04\xc9\x22\x76\x71\xde\xa3\xdc\xfd\x5a\x94\x9c\x22\x04\x20\x5d\xc4\x13\x18\x9d\x7d\x08\xf1\xf3\x8d\xa8\x9e\x13\x62\xa6\xa4\x15\xb2\x46\x3a\x4a\xc6\x12\xef\xad\x73\x96\xc6\x91\x8b\x75\x02\x9c\xa1\xfd\x1e\xdc\xa2\x23\xa1\x66\x72\x8d\x30\xf3\x37\x24\x7e\x14\xc2\x58\x48\x5c\x35\x12\x48\xe8\xc2\x09\x24\xe4\xda\x51\x97\x50\x11\x99\x86\x13\x6d\x9b\xf7\x17\x33\x94\xb0\x5c\xe9\x92\x59\x8b\x1c\xb6\x9a\x55\x15\xf2\xa9\x75\x98\xcd\xbc\x96\xd9\x81\xb7\x79\xe7\x02\x8c\xd5\x42\xae\x97\xc0\x20\x4d\x53\x21\x2d\xea\x9c\x65\xd8\xb4\x8b\xee\x82\xd0\xc4\x51\xd4\x05\x86\xbc\xb4\xe9\x25\x2d\xfa\xc3\xff\x4b\xce\xe1\x6c\x9b\x2c\x81\x20\x48\x3e\x67\xcb\x69\x98\x45\x9a\xa6\x8b\x38\x6a\x5d\x16\xbc\x8c\xec\xae\xc2\x5e\x01\x7f\xd6\xa8\x77\x9f\x5c\x25\x20\x53\xe5\xb5\x90\x68\xa0\xac\x0b\x2b\xaa\x02\xe1\x96\x76\xfb\x1a\x0a\x69\x15\x30\x30\x42\xae\x0b\x5f\xbc\x34\x8e\x42\x07\x5f\xbf\xb9\x5f\x7f\xd5\x05\xc6\x7b\xef\xf4\xb3\x6f\x0f\xc6\xd5\x72\xb8\xa4\xcb\x11\x17\x72\x0d\xdb\x0d\xda\x0d\x6a\x60\xee\x58\x17\x56\x98\x4e\x0a\xc8\x81\x49\x0e\xaa\x22\x7e\xb0\xa2\xd8\x41\xa9\xb8\xc8\x77\x20\xac\x8f\xef\x42\xec\xdd\x52\xca\x2e\xef\x58\xe1\xf6\xe6\x44\x25\xbc\xb7\xd4\x09\xe8\x6f\x97\x22\x6a\x12\x6d\x9b\x3a\x8b\x3e\xd3\x94\xa5\x45\x1c\xaf\x56\x30\x9c\xf5\xc4\x44\x03\xac\x47\xc5\xd6\x4c\x48\x63\x87\xdf\x3e\x11\xae\xc6\xf3\xee\x57\x98\xd5\x05\x04\x48\xec\x3d\x1c\xa0\xb9\x3d\x86\x87\xae\x91\x2b\x0d\x7f\x2f\x5d\x05\x88\xb3\x1d\x8d\xfb\x20\x74\x4b\xb3\x15\x36\xdb\x90\xbd\xdb\x26\x7d\x8c\xc2\x2d\xe1\x76\xf1\xc6\x59\x66\xd4\x0e\xc9\xee\xe2\x02\xa4\x28\xe0\xfb\x77\x2f\xa0\x8f\x66\x8e\x5a\x2f\x9d\x84\x17\xe7\x81\x69\xb8\xe9\x74\xe2\x76\x3d\x19\xa5\x28\xe2\x28\xe2\x98\xb3\xba\xb0\xe1\x06\x6a\x1d\x47\x51\x4b\xe9\x0c\x6d\x5b\x97\xda\xa1\x5c\x1f\x28\x5f\x8e\x88\xc2\x09\x8a\x71\x56\x59\x1a\x56\xaa\x6f\x80\xc4\x94\xda\x20\xa8\x9c\xce\x29\xcd\x85\x64\x7a\x07\x94\x67\x22\x82\x01\x66\x42\x7e\xa6\x1d\xab\xc7\xfe\xc9\xf8\xf1\xf5\xf7\xa5\x1f\x74\x9e\xfb\x14\xfa\xf2\xe6\x63\xff\x4f\xab\xad\x17\xb5\x0f\x12\x8f\x95\xf9\x47\x6d\x5d\x47\x3c\x2a\xce\xb2\x37\x38\xad\xcf\x89\x9b\xaf\xdf\xfc\xc2\x5e\xa5\xe1\xca\xcf\x09\x75\x80\xf0\x38\xad\x8e\x02\x1d\xca\xd5\x6f\x9f\xac\x98\x37\x7a\x50\xb4\x7e\x73\xa4\xdb\x01\xe4\x5e\xba\xc3\xd2\x83\xea\x1d\xa7\x6c\x01\x63\x6c\x0f\xd5\xb9\x3c\x81\xf0\x09\x32\x0e\x83\x2e\xa1\xfc\x6f\x29\x39\x2c\xe6\xb3\x88\x79\xcc\xe7\x5e\xcf\x07\x51\x7e\x28\xe9\x29\x41\x0e\xb8\x31\x51\x77\x19\xa8\x7b\x1a\xed\x39\x6a\x3f\x96\x79\xb9\xe8\xd3\xd7\xeb\x71\xad\x55\x5d\xf9\x46\x46\xd2\x19\x53\x53\x0c\x89\xe8\xed\x8d\xd5\x75\x66\xc9\x6f\x37\xa0\x82\x49\xb3\xd7\xd7\x84\xc1\x7d\xc4\xfd\x54\xcb\x95\xde\x32\xcd\x4d\xf8\xee\xb2\xea\xd4\x40\x7b\x8e\x59\xd6\x27\xa2\xf7\xef\x76\x0f\x87\x55\x80\x75\xb8\xcd\x11\xb8\xa7\x45\xfc\x7c\xe2\x1d\xe3\xf6\x06\x0f\x0a\x34\x1c\x72\xe3\x66\x37\x6d\xa8\xee\x15\x7c\xbc\xf8\x07\x23\xed\x78\xeb\xdc\x3f\xb9\x46\xfd\xb5\x87\xf2\xb6\xd8\xb2\x9d\x71\x9a\x77\x47\x87\x27\x6c\xd7\x8c\x1c\x8c\xe0\x59\x3b\xfd\x5a\x71\x29\x9d\xf8\x98\x2f\x1e\x80\x14\x10\x5d\xdc\x23\x7f\xdf\x7b\xa0\xbd\xc6\x9d\x6c\x47\x80\xe8\xb9\xfd\x63\x3c\xd3\xcf\x92\x00\x8d\x77\xf0\xd3\x60\xe8\x60\x3b\x8c\xda\x83\xfd\x41\x60\xae\xc3\x76\x1c\x68\xe3\xa1\x41\x1c\xd8\x8f\x24\xf1\xc8\x87\x06\x34\xe0\xe1\xa5\x14\xa5\xfd\x91\xfb\x7f\x33\x18\x0f\x83\x84\x1f\x42\xee\x0b\x68\x96\x5e\x29\x8e\x06\xfa\xcf\xef\x99\x64\xa5\x1b\x4f\x95\x16\xd2\xc2\x4c\xa6\x57\xb4\x90\x8c\x9e\x3c\xc9\x60\xed\xf2\xe7\xad\x73\x48\x5e\x9c\x99\xf4\xcc\x24\x1d\x9e\x99\xec\x6e\xec\x3c\xf4\x9f\x53\x5f\x36\x08\x43\x98\xb6\x7d\xe4\xbc\x18\x86\x85\xf3\x31\x1a\x18\x2c\x78\xff\xa5\x71\xe4\xfc\x85\x01\x8e\x8f\x0a\x67\xda\xb6\xc3\x88\x88\x46\xed\x71\xfa\x30\xf3\x5f\x70\xf3\x3c\x74\xff\xb4\x66\x18\x89\x1c\x6e\x97\xa0\x6e\x28\x85\xb7\xe9\x3c\x44\xf5\x86\x96\x9b\x60\x0e\xef\x9f\x88\x6e\x1a\xfb\x65\xa2\x72\x3e\xf9\xf6\xad\x25\xde\x57\x98\xd1\x87\x69\x97\x1c\xe7\xf4\xec\xcb\x12\xba\xf5\xf0\xfa\x49\xe7\xb2\x8d\x83\xf2\x1f\x54\x7f\x3a\x12\x27\x04\x38\x5e\x7f\x7f\xf0\x17\x53\x60\xd4\x32\x9f\x87\x05\xc3\xe0\xc9\x58\x51\x8c\xde\x09\xc7\x79\xf0\xb4\x11\x43\x6c\x28\x3d\x1b\xca\xc7\xb1\xa1\xfc\x39\x36\x0c\x79\x3a\x4d\x88\xf2\xe0\x9f\x05\xfb\x7f\xbf\xfd\x13\x00\x00\xff\xff\x18\xc0\x4a\xcd\xaa\x14\x00\x00") +var _templatePrivacyTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x58\x4f\x6f\xdb\x3e\x12\x3d\x4b\x9f\x62\x20\x38\x80\xd5\x75\x95\xdf\xf6\xb6\x29\x72\x28\xda\x14\x28\xb0\x9b\x76\xb7\xbd\x15\x45\xc1\x48\x23\x9b\x88\x44\x2a\x24\x15\xc7\x70\xf5\xdd\x17\x43\x91\x32\x25\xff\x69\xb2\x49\x81\x3d\x05\x26\x87\x33\x8f\x33\xef\xcd\x50\xd9\x6e\xcf\x5f\xc5\xef\x65\xb3\x51\x7c\xb9\x32\xf0\xe6\xaf\xbf\xff\xe3\x75\xa3\x50\xa3\x30\xf0\x91\xe5\x78\x23\xe5\x2d\x7c\x12\x79\x06\xef\xaa\x0a\xac\x91\x06\xda\x57\xf7\x58\x64\xf1\xb7\x15\xd7\xa0\x65\xab\x72\x84\x5c\x16\x08\x5c\x43\xc5\x73\x14\x1a\x0b\x68\x45\x81\x0a\xcc\x0a\xe1\x5d\xc3\xf2\x15\xc2\x9b\xec\x2f\xbf\x0b\xa5\x6c\x45\x11\x73\x61\xf7\xff\xf9\xe9\xfd\xd5\xf5\xd7\x2b\x28\x79\x85\xe0\xd6\x94\x94\x06\x0a\xae\x30\x37\x52\x6d\x40\x96\x60\x82\x60\x46\x21\x66\xf1\xab\xf3\xae\x8b\xe3\xed\x16\x0a\x2c\xb9\x40\x48\x1a\xc5\xef\x59\xbe\x49\xa0\x5f\x7f\x0d\x6b\x6e\x56\x80\x0f\x06\x45\x01\x33\x48\xbe\xb0\xfc\x96\x2d\x31\x09\x2c\x5f\x77\x5d\x1c\x6d\xb7\x60\xb0\x6e\x2a\x66\x10\x92\x15\xb2\x02\x55\x02\x19\x79\xd9\x6e\x81\xce\x92\x3f\x5e\x37\x52\x19\x48\xb6\x5b\x98\x65\xef\xa5\x28\xf9\x32\x73\x0e\xa1\xeb\x12\x0b\x64\xd6\xdc\x2e\xe1\xe2\x12\x6e\x98\xc6\x43\x56\x71\x7c\xcf\x14\xcc\xe3\xe8\xfc\x9c\x32\x2a\xd7\x50\xb3\x0d\xdc\x20\x28\x34\xad\x12\x58\xc0\xcd\x06\x54\x5b\xa1\x06\x23\x81\x8b\x82\xe7\x84\xc9\xac\x98\xb1\x59\x69\x64\xc5\xf3\x8d\x3d\x8e\xf7\xac\x6a\x99\xe1\x52\x80\x5e\xc9\xb6\x2a\xc0\xa0\xaa\xb9\x20\x7b\x7b\x6d\x26\x80\xd9\x10\x05\xe6\x5c\x73\x29\xb2\x38\xea\x63\x5e\x02\x2a\x25\x95\xce\xae\x71\x3d\x4f\x50\x98\x73\x97\x8e\x0b\x77\x82\x10\x24\x69\x6c\xe3\x7c\x40\xb1\xf9\xb3\x28\x0b\x8a\x10\x80\xb4\x11\x4f\x60\xb4\xf6\x21\xc4\xaf\xb7\xbc\x79\x49\x88\xb9\x14\x86\x8b\x16\xe9\x28\x19\x0b\x7c\x30\xd6\x59\x16\x47\x36\xd6\x09\x70\x9a\xf6\x1d\xb8\xb4\x27\xa1\x62\x62\x89\x30\xf3\x37\x24\x7e\x54\x5c\x1b\x48\x6c\x35\x12\x48\xe8\xc2\x09\x24\xe4\xda\x52\x97\x50\x11\x99\x86\x13\x5d\x57\xba\x8b\x69\x4a\x58\x29\x55\xcd\x8c\xc1\x02\xd6\x8a\x35\x0d\x16\x53\xeb\x30\x9b\x65\x2b\xf2\x3d\x6f\xf3\xde\x05\x68\xa3\xb8\x58\x2e\x80\x41\x96\x65\x5c\x18\x54\x25\xcb\x71\xdb\xa5\xfd\x05\x61\x1b\x47\x51\x1f\x18\xca\xda\x64\x57\xb4\xe8\x0f\xff\x2d\xb9\x80\xb3\x75\xb2\x00\x82\x20\x8a\x39\x5b\x4c\xc3\xa4\x59\x96\xa5\x71\xd4\xd9\x2c\x78\x19\x99\x4d\x83\x4e\x01\xff\x6e\x51\x6d\xbe\xd8\x4a\x40\x2e\xeb\x1b\x2e\x50\x43\xdd\x56\x86\x37\x15\xc2\x1d\xed\xba\x1a\x72\x61\x24\x30\xd0\x5c\x2c\x2b\x5f\xbc\x2c\x8e\x42\x07\xdf\x7f\xd8\x5f\xff\x69\x2b\x8c\x77\xde\xe9\xa7\x6b\x0f\xda\xd6\x72\xb8\xa4\xcd\x51\xc1\xc5\x12\xd6\x2b\x34\x2b\x54\xc0\xec\xb1\x3e\x2c\xd7\xbd\x14\xb0\x00\x26\x0a\x90\x0d\xf1\x83\x55\xd5\x06\x6a\x59\xf0\x72\x03\xdc\xf8\xf8\x36\xc4\xce\x2d\xa5\xec\xea\x9e\x55\x76\x6f\x4e\x54\xc2\x07\x43\x9d\x80\xfe\xf6\x29\xa2\x26\xd1\x75\x99\xb5\x70\x99\xa6\x2c\xa5\x71\x7c\x7e\x0e\xc3\x59\x4f\x4c\xd4\xc0\x1c\x2a\xb6\x64\x5c\x68\x33\xfc\xf6\x89\xb0\x35\x9e\xf7\xbf\xc2\xac\xa6\x10\x20\x31\x0f\xb0\x87\xe6\xee\x18\x1e\xba\x46\x29\x15\xfc\x5c\xd8\x0a\x10\x67\x7b\x1a\xbb\x20\x74\x4b\xbd\xe6\x26\x5f\x91\xbd\xdd\x26\x7d\x8c\xc2\x2d\xe0\x2e\x7d\x6b\x2d\x73\x6a\x87\x64\x77\x79\x09\x82\x57\xf0\xeb\x97\x17\xd0\x27\x3d\x47\xa5\x16\x56\xc2\xe9\x45\x60\x1a\x6e\x5a\x9d\xd8\x5d\x4f\x46\xc1\xab\x38\x8a\x0a\x2c\x59\x5b\x99\x70\x03\x95\x8a\xa3\xa8\xa3\x74\x86\xb6\x9d\x4d\xed\x50\xae\x8f\x94\x2f\x4b\x44\x6e\x05\xc5\x0a\xd6\x18\x1a\x56\xd2\x35\x40\x62\x4a\xab\x11\x64\x49\xe7\xa4\x2a\xb8\x60\x6a\x03\x94\x67\x22\x82\x06\xa6\x43\x7e\x66\x3d\xab\xc7\xfe\xc9\xf8\xf1\xf5\xf7\xa5\x1f\x74\x5e\xfa\x14\xfa\xf2\x96\x63\xff\xcf\xab\xad\x17\xb5\x0f\x12\x8f\x95\xf9\xaf\xd6\xd8\x8e\x78\x54\x9c\xb5\x33\x38\xad\xcf\x89\x9b\xef\x3f\xfc\xc2\x4e\xa5\xe1\xca\xd3\x84\x3a\x40\x78\x9c\x56\x47\x81\xf6\xe5\xea\xb7\x4f\x56\xcc\x1b\x1d\x14\xad\xdf\x1c\xe9\x76\x00\xb9\x93\xee\xb0\x74\x50\xbd\xe3\x94\xa5\x30\xc6\x76\xa8\xce\xf5\x09\x84\xcf\x90\x71\x18\x74\x01\xf5\xff\x97\x92\xc3\x62\xbe\x88\x98\xc7\x7c\x76\x7a\xde\x8b\xf2\x5b\x49\x4f\x09\xb2\xc7\x8d\x89\xba\xeb\x40\xdd\xd3\x68\x2f\x51\xfb\xb1\xcc\xeb\xd4\xa5\xcf\xe9\x71\xa9\x64\xdb\xf8\x46\x46\xd2\x19\x53\x93\x0f\x89\x70\xf6\xda\xa8\x36\x37\xe4\xb7\x1f\x50\xc1\xa4\xd9\xe9\x6b\xc2\x60\x17\x71\x37\xd5\x4a\xa9\xd6\x4c\x15\x3a\x7c\x77\x19\x79\x6a\xa0\xbd\xc4\x2c\x73\x89\x70\xfe\xed\xee\xfe\xb0\x0a\xb0\x0e\xb7\x39\x02\xf7\xb4\x88\x5f\x4e\xbc\x63\xdc\xde\xe0\xa0\x40\xc3\x21\x37\x6e\x76\xd3\x86\x6a\x5f\xc1\xc7\x8b\xbf\x37\xd2\x8e\xb7\xce\xdd\x93\x6b\xd4\x5f\x1d\x94\x77\xd5\x9a\x6d\xb4\xd5\xbc\x3d\x3a\x3c\x61\xfb\x66\x64\x61\x04\xcf\xda\xe9\xd7\x8a\x4d\xe9\xc4\xc7\x3c\x3d\x00\x29\x20\x3a\x7f\xc0\xe2\x83\xf3\x40\x7b\x5b\x7b\xb2\x1b\x01\xa2\xe7\xf6\xef\xf1\x4c\x3f\x4b\x02\x34\xde\xc1\x93\xc1\xd0\xc1\x6e\x18\xb5\x7b\xfb\x83\xc0\x6c\x87\xed\x39\xd0\xc5\x43\x83\xd8\xb3\x1f\x49\xe2\x91\x0f\x0d\xd8\x82\x87\x97\x51\x94\xee\x77\xee\xff\x97\xc1\xb8\x1f\x24\x76\x5f\x92\xde\xf0\x73\x83\x6a\xdc\x11\x5d\x11\x28\xeb\x34\xeb\x75\x83\x39\x2f\x39\x06\xad\x59\xfa\x33\xae\x18\x07\xfd\xcd\x65\x13\x02\xfb\xdc\xa4\x70\xa4\x3c\xd3\x7e\x3b\xb7\xdd\xfd\xe7\xd3\x35\x1a\xf1\x12\xea\xec\x73\x33\x4f\x69\xce\xc9\x26\xb5\x8b\x3e\x0c\xa1\x2c\x27\x1f\x89\xc3\x4d\xe0\x4c\x93\x3c\x85\x34\xfe\x09\x93\x2c\x9c\xaf\xb4\x9f\x7e\xde\x0d\x8d\xd5\x38\xea\xac\xca\x83\x8f\x4a\xfb\x35\x39\xcb\xae\x65\x81\x1a\xdc\xbf\x32\x66\x82\xd5\x76\xd4\x37\x8a\x0b\x03\x33\x91\x5d\xd3\x42\x32\x7a\x3e\x26\x83\xb5\xe5\xa2\xb7\x2e\x21\x79\x75\xa6\xb3\x33\x9d\xf4\x37\x9e\x89\x9e\x3d\xd6\x83\xfb\x34\xfd\xb6\x42\x18\xc2\x74\xdd\x23\x67\xef\x30\x78\xad\x8f\xd1\xf0\x65\xc1\x5b\x3a\x8b\x23\xeb\x2f\x0c\x70\x7c\xec\x5a\xd3\xae\x1b\xc6\x6d\x34\x1a\x35\xd3\x47\xae\xff\x1a\x9e\x97\xa1\xfb\xe7\x0d\x16\x2a\xfe\xdd\x02\xe4\x2d\xa5\xf0\x2e\x9b\x87\xa8\xde\xd2\x72\xc8\x85\xdd\x73\x7b\x54\xdb\x43\x14\x69\x05\x3e\x34\x98\xd3\x47\x7e\x9f\x1c\xeb\xf4\xec\xdb\x02\xfa\xf5\xf0\xfa\x49\xef\xb2\x8b\x83\xf2\xef\x55\x7f\x4a\xf7\x09\x01\x8e\xd7\xdf\x1f\xfc\xc3\x14\x18\x8d\x9f\x97\x61\xc1\x30\xc4\x73\x56\x55\xa3\x37\xd7\x71\x1e\x3c\x6f\x5c\xdb\x56\xe0\xd9\x50\x3f\x8e\x0d\xf5\xd3\xd8\x30\xe4\xe9\x34\x21\xea\xbd\x7f\xbc\xec\xfe\x95\xf9\xdf\x00\x00\x00\xff\xff\x14\x49\x8d\xd0\xf6\x15\x00\x00") func templatePrivacyTmplBytes() ([]byte, error) { return bindataRead( @@ -1040,7 +1040,7 @@ func templatePrivacyTmpl() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "template/privacy.tmpl", size: 5290, mode: os.FileMode(420), modTime: time.Unix(1, 0)} + info := bindataFileInfo{name: "template/privacy.tmpl", size: 5622, mode: os.FileMode(420), modTime: time.Unix(1, 0)} a := &asset{bytes: bytes, info: info} return a, nil } diff --git a/entc/gen/template/privacy.tmpl b/entc/gen/template/privacy.tmpl index e28f68269..53c81daf1 100644 --- a/entc/gen/template/privacy.tmpl +++ b/entc/gen/template/privacy.tmpl @@ -140,6 +140,16 @@ type fixedDecisionRule struct { err error } func (f fixedDecisionRule) EvalQuery(context.Context, {{ $pkg }}.Query) error { return f.err } func (f fixedDecisionRule) EvalMutation(context.Context, {{ $pkg }}.Mutation) error { return f.err } +// DenyMutationOperation returns a rule denying specifies mutation operation. +func DenyMutationOperation(op {{ $pkg }}.Op) MutationRule { + return MutationRuleFunc(func(_ context.Context, m {{ $pkg }}.Mutation) error { + if m.Op().Is(op) { + return Denyf("ent/privacy: operation %s is not allowed", m.Op()) + } + return Skip + }) +} + {{- range $n := $.Nodes }} {{ $name := print $n.Name "QueryRuleFunc" }} {{ $type := printf "*%s.%s" $pkg $n.QueryName }} diff --git a/entc/integration/config/ent/privacy/privacy.go b/entc/integration/config/ent/privacy/privacy.go index 745270da0..b1787a98e 100644 --- a/entc/integration/config/ent/privacy/privacy.go +++ b/entc/integration/config/ent/privacy/privacy.go @@ -148,6 +148,16 @@ type fixedDecisionRule struct{ err error } func (f fixedDecisionRule) EvalQuery(context.Context, ent.Query) error { return f.err } func (f fixedDecisionRule) EvalMutation(context.Context, ent.Mutation) error { return f.err } +// DenyMutationOperation returns a rule denying specifies mutation operation. +func DenyMutationOperation(op ent.Op) MutationRule { + return MutationRuleFunc(func(_ context.Context, m ent.Mutation) error { + if m.Op().Is(op) { + return Denyf("ent/privacy: operation %s is not allowed", m.Op()) + } + return Skip + }) +} + // The UserQueryRuleFunc type is an adapter to allow the use of ordinary // functions as a query rule. type UserQueryRuleFunc func(context.Context, *ent.UserQuery) error diff --git a/entc/integration/customid/ent/privacy/privacy.go b/entc/integration/customid/ent/privacy/privacy.go index 58a2cc0ed..4a19a3177 100644 --- a/entc/integration/customid/ent/privacy/privacy.go +++ b/entc/integration/customid/ent/privacy/privacy.go @@ -148,6 +148,16 @@ type fixedDecisionRule struct{ err error } func (f fixedDecisionRule) EvalQuery(context.Context, ent.Query) error { return f.err } func (f fixedDecisionRule) EvalMutation(context.Context, ent.Mutation) error { return f.err } +// DenyMutationOperation returns a rule denying specifies mutation operation. +func DenyMutationOperation(op ent.Op) MutationRule { + return MutationRuleFunc(func(_ context.Context, m ent.Mutation) error { + if m.Op().Is(op) { + return Denyf("ent/privacy: operation %s is not allowed", m.Op()) + } + return Skip + }) +} + // The BlobQueryRuleFunc type is an adapter to allow the use of ordinary // functions as a query rule. type BlobQueryRuleFunc func(context.Context, *ent.BlobQuery) error diff --git a/entc/integration/ent/privacy/privacy.go b/entc/integration/ent/privacy/privacy.go index 8f6e18146..82613857e 100644 --- a/entc/integration/ent/privacy/privacy.go +++ b/entc/integration/ent/privacy/privacy.go @@ -148,6 +148,16 @@ type fixedDecisionRule struct{ err error } func (f fixedDecisionRule) EvalQuery(context.Context, ent.Query) error { return f.err } func (f fixedDecisionRule) EvalMutation(context.Context, ent.Mutation) error { return f.err } +// DenyMutationOperation returns a rule denying specifies mutation operation. +func DenyMutationOperation(op ent.Op) MutationRule { + return MutationRuleFunc(func(_ context.Context, m ent.Mutation) error { + if m.Op().Is(op) { + return Denyf("ent/privacy: operation %s is not allowed", m.Op()) + } + return Skip + }) +} + // The CardQueryRuleFunc type is an adapter to allow the use of ordinary // functions as a query rule. type CardQueryRuleFunc func(context.Context, *ent.CardQuery) error diff --git a/entc/integration/gremlin/ent/privacy/privacy.go b/entc/integration/gremlin/ent/privacy/privacy.go index 6cb6f5db3..ce1496313 100644 --- a/entc/integration/gremlin/ent/privacy/privacy.go +++ b/entc/integration/gremlin/ent/privacy/privacy.go @@ -148,6 +148,16 @@ type fixedDecisionRule struct{ err error } func (f fixedDecisionRule) EvalQuery(context.Context, ent.Query) error { return f.err } func (f fixedDecisionRule) EvalMutation(context.Context, ent.Mutation) error { return f.err } +// DenyMutationOperation returns a rule denying specifies mutation operation. +func DenyMutationOperation(op ent.Op) MutationRule { + return MutationRuleFunc(func(_ context.Context, m ent.Mutation) error { + if m.Op().Is(op) { + return Denyf("ent/privacy: operation %s is not allowed", m.Op()) + } + return Skip + }) +} + // The CardQueryRuleFunc type is an adapter to allow the use of ordinary // functions as a query rule. type CardQueryRuleFunc func(context.Context, *ent.CardQuery) error diff --git a/entc/integration/hooks/ent/privacy/privacy.go b/entc/integration/hooks/ent/privacy/privacy.go index 481a79ed3..cfb952df0 100644 --- a/entc/integration/hooks/ent/privacy/privacy.go +++ b/entc/integration/hooks/ent/privacy/privacy.go @@ -148,6 +148,16 @@ type fixedDecisionRule struct{ err error } func (f fixedDecisionRule) EvalQuery(context.Context, ent.Query) error { return f.err } func (f fixedDecisionRule) EvalMutation(context.Context, ent.Mutation) error { return f.err } +// DenyMutationOperation returns a rule denying specifies mutation operation. +func DenyMutationOperation(op ent.Op) MutationRule { + return MutationRuleFunc(func(_ context.Context, m ent.Mutation) error { + if m.Op().Is(op) { + return Denyf("ent/privacy: operation %s is not allowed", m.Op()) + } + return Skip + }) +} + // The CardQueryRuleFunc type is an adapter to allow the use of ordinary // functions as a query rule. type CardQueryRuleFunc func(context.Context, *ent.CardQuery) error diff --git a/entc/integration/idtype/ent/privacy/privacy.go b/entc/integration/idtype/ent/privacy/privacy.go index ed4f26f2a..b9e135d12 100644 --- a/entc/integration/idtype/ent/privacy/privacy.go +++ b/entc/integration/idtype/ent/privacy/privacy.go @@ -148,6 +148,16 @@ type fixedDecisionRule struct{ err error } func (f fixedDecisionRule) EvalQuery(context.Context, ent.Query) error { return f.err } func (f fixedDecisionRule) EvalMutation(context.Context, ent.Mutation) error { return f.err } +// DenyMutationOperation returns a rule denying specifies mutation operation. +func DenyMutationOperation(op ent.Op) MutationRule { + return MutationRuleFunc(func(_ context.Context, m ent.Mutation) error { + if m.Op().Is(op) { + return Denyf("ent/privacy: operation %s is not allowed", m.Op()) + } + return Skip + }) +} + // The UserQueryRuleFunc type is an adapter to allow the use of ordinary // functions as a query rule. type UserQueryRuleFunc func(context.Context, *ent.UserQuery) error diff --git a/entc/integration/json/ent/privacy/privacy.go b/entc/integration/json/ent/privacy/privacy.go index e7b1d9369..6260bd6a1 100644 --- a/entc/integration/json/ent/privacy/privacy.go +++ b/entc/integration/json/ent/privacy/privacy.go @@ -148,6 +148,16 @@ type fixedDecisionRule struct{ err error } func (f fixedDecisionRule) EvalQuery(context.Context, ent.Query) error { return f.err } func (f fixedDecisionRule) EvalMutation(context.Context, ent.Mutation) error { return f.err } +// DenyMutationOperation returns a rule denying specifies mutation operation. +func DenyMutationOperation(op ent.Op) MutationRule { + return MutationRuleFunc(func(_ context.Context, m ent.Mutation) error { + if m.Op().Is(op) { + return Denyf("ent/privacy: operation %s is not allowed", m.Op()) + } + return Skip + }) +} + // The UserQueryRuleFunc type is an adapter to allow the use of ordinary // functions as a query rule. type UserQueryRuleFunc func(context.Context, *ent.UserQuery) error diff --git a/entc/integration/migrate/entv1/privacy/privacy.go b/entc/integration/migrate/entv1/privacy/privacy.go index 3462b20a3..a4a3d6ff5 100644 --- a/entc/integration/migrate/entv1/privacy/privacy.go +++ b/entc/integration/migrate/entv1/privacy/privacy.go @@ -148,6 +148,16 @@ type fixedDecisionRule struct{ err error } func (f fixedDecisionRule) EvalQuery(context.Context, entv1.Query) error { return f.err } func (f fixedDecisionRule) EvalMutation(context.Context, entv1.Mutation) error { return f.err } +// DenyMutationOperation returns a rule denying specifies mutation operation. +func DenyMutationOperation(op entv1.Op) MutationRule { + return MutationRuleFunc(func(_ context.Context, m entv1.Mutation) error { + if m.Op().Is(op) { + return Denyf("ent/privacy: operation %s is not allowed", m.Op()) + } + return Skip + }) +} + // The CarQueryRuleFunc type is an adapter to allow the use of ordinary // functions as a query rule. type CarQueryRuleFunc func(context.Context, *entv1.CarQuery) error diff --git a/entc/integration/migrate/entv2/privacy/privacy.go b/entc/integration/migrate/entv2/privacy/privacy.go index cb22ce294..715bb1a46 100644 --- a/entc/integration/migrate/entv2/privacy/privacy.go +++ b/entc/integration/migrate/entv2/privacy/privacy.go @@ -148,6 +148,16 @@ type fixedDecisionRule struct{ err error } func (f fixedDecisionRule) EvalQuery(context.Context, entv2.Query) error { return f.err } func (f fixedDecisionRule) EvalMutation(context.Context, entv2.Mutation) error { return f.err } +// DenyMutationOperation returns a rule denying specifies mutation operation. +func DenyMutationOperation(op entv2.Op) MutationRule { + return MutationRuleFunc(func(_ context.Context, m entv2.Mutation) error { + if m.Op().Is(op) { + return Denyf("ent/privacy: operation %s is not allowed", m.Op()) + } + return Skip + }) +} + // The CarQueryRuleFunc type is an adapter to allow the use of ordinary // functions as a query rule. type CarQueryRuleFunc func(context.Context, *entv2.CarQuery) error diff --git a/entc/integration/privacy/ent/privacy/privacy.go b/entc/integration/privacy/ent/privacy/privacy.go index d7ad9407a..c6e0fc6e8 100644 --- a/entc/integration/privacy/ent/privacy/privacy.go +++ b/entc/integration/privacy/ent/privacy/privacy.go @@ -148,6 +148,16 @@ type fixedDecisionRule struct{ err error } func (f fixedDecisionRule) EvalQuery(context.Context, ent.Query) error { return f.err } func (f fixedDecisionRule) EvalMutation(context.Context, ent.Mutation) error { return f.err } +// DenyMutationOperation returns a rule denying specifies mutation operation. +func DenyMutationOperation(op ent.Op) MutationRule { + return MutationRuleFunc(func(_ context.Context, m ent.Mutation) error { + if m.Op().Is(op) { + return Denyf("ent/privacy: operation %s is not allowed", m.Op()) + } + return Skip + }) +} + // The GalaxyQueryRuleFunc type is an adapter to allow the use of ordinary // functions as a query rule. type GalaxyQueryRuleFunc func(context.Context, *ent.GalaxyQuery) error diff --git a/entc/integration/template/ent/privacy/privacy.go b/entc/integration/template/ent/privacy/privacy.go index b73eab850..c4e8c024f 100644 --- a/entc/integration/template/ent/privacy/privacy.go +++ b/entc/integration/template/ent/privacy/privacy.go @@ -148,6 +148,16 @@ type fixedDecisionRule struct{ err error } func (f fixedDecisionRule) EvalQuery(context.Context, ent.Query) error { return f.err } func (f fixedDecisionRule) EvalMutation(context.Context, ent.Mutation) error { return f.err } +// DenyMutationOperation returns a rule denying specifies mutation operation. +func DenyMutationOperation(op ent.Op) MutationRule { + return MutationRuleFunc(func(_ context.Context, m ent.Mutation) error { + if m.Op().Is(op) { + return Denyf("ent/privacy: operation %s is not allowed", m.Op()) + } + return Skip + }) +} + // The GroupQueryRuleFunc type is an adapter to allow the use of ordinary // functions as a query rule. type GroupQueryRuleFunc func(context.Context, *ent.GroupQuery) error diff --git a/examples/edgeindex/ent/privacy/privacy.go b/examples/edgeindex/ent/privacy/privacy.go index 92282823d..c9ef57f00 100644 --- a/examples/edgeindex/ent/privacy/privacy.go +++ b/examples/edgeindex/ent/privacy/privacy.go @@ -148,6 +148,16 @@ type fixedDecisionRule struct{ err error } func (f fixedDecisionRule) EvalQuery(context.Context, ent.Query) error { return f.err } func (f fixedDecisionRule) EvalMutation(context.Context, ent.Mutation) error { return f.err } +// DenyMutationOperation returns a rule denying specifies mutation operation. +func DenyMutationOperation(op ent.Op) MutationRule { + return MutationRuleFunc(func(_ context.Context, m ent.Mutation) error { + if m.Op().Is(op) { + return Denyf("ent/privacy: operation %s is not allowed", m.Op()) + } + return Skip + }) +} + // The CityQueryRuleFunc type is an adapter to allow the use of ordinary // functions as a query rule. type CityQueryRuleFunc func(context.Context, *ent.CityQuery) error diff --git a/examples/entcpkg/ent/privacy/privacy.go b/examples/entcpkg/ent/privacy/privacy.go index f6bdba5c6..d01bd9693 100644 --- a/examples/entcpkg/ent/privacy/privacy.go +++ b/examples/entcpkg/ent/privacy/privacy.go @@ -148,6 +148,16 @@ type fixedDecisionRule struct{ err error } func (f fixedDecisionRule) EvalQuery(context.Context, ent.Query) error { return f.err } func (f fixedDecisionRule) EvalMutation(context.Context, ent.Mutation) error { return f.err } +// DenyMutationOperation returns a rule denying specifies mutation operation. +func DenyMutationOperation(op ent.Op) MutationRule { + return MutationRuleFunc(func(_ context.Context, m ent.Mutation) error { + if m.Op().Is(op) { + return Denyf("ent/privacy: operation %s is not allowed", m.Op()) + } + return Skip + }) +} + // The UserQueryRuleFunc type is an adapter to allow the use of ordinary // functions as a query rule. type UserQueryRuleFunc func(context.Context, *ent.UserQuery) error diff --git a/examples/m2m2types/ent/privacy/privacy.go b/examples/m2m2types/ent/privacy/privacy.go index 83ecb77c0..e0367d393 100644 --- a/examples/m2m2types/ent/privacy/privacy.go +++ b/examples/m2m2types/ent/privacy/privacy.go @@ -148,6 +148,16 @@ type fixedDecisionRule struct{ err error } func (f fixedDecisionRule) EvalQuery(context.Context, ent.Query) error { return f.err } func (f fixedDecisionRule) EvalMutation(context.Context, ent.Mutation) error { return f.err } +// DenyMutationOperation returns a rule denying specifies mutation operation. +func DenyMutationOperation(op ent.Op) MutationRule { + return MutationRuleFunc(func(_ context.Context, m ent.Mutation) error { + if m.Op().Is(op) { + return Denyf("ent/privacy: operation %s is not allowed", m.Op()) + } + return Skip + }) +} + // The GroupQueryRuleFunc type is an adapter to allow the use of ordinary // functions as a query rule. type GroupQueryRuleFunc func(context.Context, *ent.GroupQuery) error diff --git a/examples/m2mbidi/ent/privacy/privacy.go b/examples/m2mbidi/ent/privacy/privacy.go index 809abd6cc..00a13af76 100644 --- a/examples/m2mbidi/ent/privacy/privacy.go +++ b/examples/m2mbidi/ent/privacy/privacy.go @@ -148,6 +148,16 @@ type fixedDecisionRule struct{ err error } func (f fixedDecisionRule) EvalQuery(context.Context, ent.Query) error { return f.err } func (f fixedDecisionRule) EvalMutation(context.Context, ent.Mutation) error { return f.err } +// DenyMutationOperation returns a rule denying specifies mutation operation. +func DenyMutationOperation(op ent.Op) MutationRule { + return MutationRuleFunc(func(_ context.Context, m ent.Mutation) error { + if m.Op().Is(op) { + return Denyf("ent/privacy: operation %s is not allowed", m.Op()) + } + return Skip + }) +} + // The UserQueryRuleFunc type is an adapter to allow the use of ordinary // functions as a query rule. type UserQueryRuleFunc func(context.Context, *ent.UserQuery) error diff --git a/examples/m2mrecur/ent/privacy/privacy.go b/examples/m2mrecur/ent/privacy/privacy.go index 40f597ad2..2dc9b397f 100644 --- a/examples/m2mrecur/ent/privacy/privacy.go +++ b/examples/m2mrecur/ent/privacy/privacy.go @@ -148,6 +148,16 @@ type fixedDecisionRule struct{ err error } func (f fixedDecisionRule) EvalQuery(context.Context, ent.Query) error { return f.err } func (f fixedDecisionRule) EvalMutation(context.Context, ent.Mutation) error { return f.err } +// DenyMutationOperation returns a rule denying specifies mutation operation. +func DenyMutationOperation(op ent.Op) MutationRule { + return MutationRuleFunc(func(_ context.Context, m ent.Mutation) error { + if m.Op().Is(op) { + return Denyf("ent/privacy: operation %s is not allowed", m.Op()) + } + return Skip + }) +} + // The UserQueryRuleFunc type is an adapter to allow the use of ordinary // functions as a query rule. type UserQueryRuleFunc func(context.Context, *ent.UserQuery) error diff --git a/examples/o2m2types/ent/privacy/privacy.go b/examples/o2m2types/ent/privacy/privacy.go index ec598e9a5..6355de10f 100644 --- a/examples/o2m2types/ent/privacy/privacy.go +++ b/examples/o2m2types/ent/privacy/privacy.go @@ -148,6 +148,16 @@ type fixedDecisionRule struct{ err error } func (f fixedDecisionRule) EvalQuery(context.Context, ent.Query) error { return f.err } func (f fixedDecisionRule) EvalMutation(context.Context, ent.Mutation) error { return f.err } +// DenyMutationOperation returns a rule denying specifies mutation operation. +func DenyMutationOperation(op ent.Op) MutationRule { + return MutationRuleFunc(func(_ context.Context, m ent.Mutation) error { + if m.Op().Is(op) { + return Denyf("ent/privacy: operation %s is not allowed", m.Op()) + } + return Skip + }) +} + // The PetQueryRuleFunc type is an adapter to allow the use of ordinary // functions as a query rule. type PetQueryRuleFunc func(context.Context, *ent.PetQuery) error diff --git a/examples/o2mrecur/ent/privacy/privacy.go b/examples/o2mrecur/ent/privacy/privacy.go index b53755065..09f718187 100644 --- a/examples/o2mrecur/ent/privacy/privacy.go +++ b/examples/o2mrecur/ent/privacy/privacy.go @@ -148,6 +148,16 @@ type fixedDecisionRule struct{ err error } func (f fixedDecisionRule) EvalQuery(context.Context, ent.Query) error { return f.err } func (f fixedDecisionRule) EvalMutation(context.Context, ent.Mutation) error { return f.err } +// DenyMutationOperation returns a rule denying specifies mutation operation. +func DenyMutationOperation(op ent.Op) MutationRule { + return MutationRuleFunc(func(_ context.Context, m ent.Mutation) error { + if m.Op().Is(op) { + return Denyf("ent/privacy: operation %s is not allowed", m.Op()) + } + return Skip + }) +} + // The NodeQueryRuleFunc type is an adapter to allow the use of ordinary // functions as a query rule. type NodeQueryRuleFunc func(context.Context, *ent.NodeQuery) error diff --git a/examples/o2o2types/ent/privacy/privacy.go b/examples/o2o2types/ent/privacy/privacy.go index e6e228348..5d46509ea 100644 --- a/examples/o2o2types/ent/privacy/privacy.go +++ b/examples/o2o2types/ent/privacy/privacy.go @@ -148,6 +148,16 @@ type fixedDecisionRule struct{ err error } func (f fixedDecisionRule) EvalQuery(context.Context, ent.Query) error { return f.err } func (f fixedDecisionRule) EvalMutation(context.Context, ent.Mutation) error { return f.err } +// DenyMutationOperation returns a rule denying specifies mutation operation. +func DenyMutationOperation(op ent.Op) MutationRule { + return MutationRuleFunc(func(_ context.Context, m ent.Mutation) error { + if m.Op().Is(op) { + return Denyf("ent/privacy: operation %s is not allowed", m.Op()) + } + return Skip + }) +} + // The CardQueryRuleFunc type is an adapter to allow the use of ordinary // functions as a query rule. type CardQueryRuleFunc func(context.Context, *ent.CardQuery) error diff --git a/examples/o2obidi/ent/privacy/privacy.go b/examples/o2obidi/ent/privacy/privacy.go index 60f689d38..b672fc2cf 100644 --- a/examples/o2obidi/ent/privacy/privacy.go +++ b/examples/o2obidi/ent/privacy/privacy.go @@ -148,6 +148,16 @@ type fixedDecisionRule struct{ err error } func (f fixedDecisionRule) EvalQuery(context.Context, ent.Query) error { return f.err } func (f fixedDecisionRule) EvalMutation(context.Context, ent.Mutation) error { return f.err } +// DenyMutationOperation returns a rule denying specifies mutation operation. +func DenyMutationOperation(op ent.Op) MutationRule { + return MutationRuleFunc(func(_ context.Context, m ent.Mutation) error { + if m.Op().Is(op) { + return Denyf("ent/privacy: operation %s is not allowed", m.Op()) + } + return Skip + }) +} + // The UserQueryRuleFunc type is an adapter to allow the use of ordinary // functions as a query rule. type UserQueryRuleFunc func(context.Context, *ent.UserQuery) error diff --git a/examples/o2orecur/ent/privacy/privacy.go b/examples/o2orecur/ent/privacy/privacy.go index 7cb311500..e04a9fbe4 100644 --- a/examples/o2orecur/ent/privacy/privacy.go +++ b/examples/o2orecur/ent/privacy/privacy.go @@ -148,6 +148,16 @@ type fixedDecisionRule struct{ err error } func (f fixedDecisionRule) EvalQuery(context.Context, ent.Query) error { return f.err } func (f fixedDecisionRule) EvalMutation(context.Context, ent.Mutation) error { return f.err } +// DenyMutationOperation returns a rule denying specifies mutation operation. +func DenyMutationOperation(op ent.Op) MutationRule { + return MutationRuleFunc(func(_ context.Context, m ent.Mutation) error { + if m.Op().Is(op) { + return Denyf("ent/privacy: operation %s is not allowed", m.Op()) + } + return Skip + }) +} + // The NodeQueryRuleFunc type is an adapter to allow the use of ordinary // functions as a query rule. type NodeQueryRuleFunc func(context.Context, *ent.NodeQuery) error diff --git a/examples/start/ent/privacy/privacy.go b/examples/start/ent/privacy/privacy.go index 3c3873531..93ac19f46 100644 --- a/examples/start/ent/privacy/privacy.go +++ b/examples/start/ent/privacy/privacy.go @@ -148,6 +148,16 @@ type fixedDecisionRule struct{ err error } func (f fixedDecisionRule) EvalQuery(context.Context, ent.Query) error { return f.err } func (f fixedDecisionRule) EvalMutation(context.Context, ent.Mutation) error { return f.err } +// DenyMutationOperation returns a rule denying specifies mutation operation. +func DenyMutationOperation(op ent.Op) MutationRule { + return MutationRuleFunc(func(_ context.Context, m ent.Mutation) error { + if m.Op().Is(op) { + return Denyf("ent/privacy: operation %s is not allowed", m.Op()) + } + return Skip + }) +} + // The CarQueryRuleFunc type is an adapter to allow the use of ordinary // functions as a query rule. type CarQueryRuleFunc func(context.Context, *ent.CarQuery) error diff --git a/examples/traversal/ent/privacy/privacy.go b/examples/traversal/ent/privacy/privacy.go index 548303364..8afc596cf 100644 --- a/examples/traversal/ent/privacy/privacy.go +++ b/examples/traversal/ent/privacy/privacy.go @@ -148,6 +148,16 @@ type fixedDecisionRule struct{ err error } func (f fixedDecisionRule) EvalQuery(context.Context, ent.Query) error { return f.err } func (f fixedDecisionRule) EvalMutation(context.Context, ent.Mutation) error { return f.err } +// DenyMutationOperation returns a rule denying specifies mutation operation. +func DenyMutationOperation(op ent.Op) MutationRule { + return MutationRuleFunc(func(_ context.Context, m ent.Mutation) error { + if m.Op().Is(op) { + return Denyf("ent/privacy: operation %s is not allowed", m.Op()) + } + return Skip + }) +} + // The GroupQueryRuleFunc type is an adapter to allow the use of ordinary // functions as a query rule. type GroupQueryRuleFunc func(context.Context, *ent.GroupQuery) error