Commit 59d302d
fix(policy): skip m2m update-policy check for newly created side on connect
When creating a model with a nested many-to-many `connect`, the join table
insert triggered an update-policy check on the just-created entity. Because
the connection doesn't exist yet at check time, relation-based policies
(e.g. `parents?[id == auth().id]`) always evaluated to false, causing a
spurious "not updatable" error.
Fix by embedding a lightweight marker in the insert query's end-modifier
comment so the policy handler can identify the newly-created side and skip
its circular update check. The connected side's update policy is still
enforced. Adds regression test for issue #2531.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>1 parent 80f364a commit 59d302d
File tree
3 files changed
+126
-7
lines changed- packages
- orm/src/client/crud/operations
- plugins/policy/src
- tests/regression/test
3 files changed
+126
-7
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
554 | 554 | | |
555 | 555 | | |
556 | 556 | | |
557 | | - | |
| 557 | + | |
| 558 | + | |
558 | 559 | | |
559 | 560 | | |
560 | 561 | | |
| |||
565 | 566 | | |
566 | 567 | | |
567 | 568 | | |
| 569 | + | |
568 | 570 | | |
569 | 571 | | |
570 | 572 | | |
| |||
647 | 649 | | |
648 | 650 | | |
649 | 651 | | |
| 652 | + | |
| 653 | + | |
| 654 | + | |
| 655 | + | |
650 | 656 | | |
651 | 657 | | |
652 | 658 | | |
| |||
657 | 663 | | |
658 | 664 | | |
659 | 665 | | |
| 666 | + | |
660 | 667 | | |
661 | 668 | | |
662 | 669 | | |
| |||
694 | 701 | | |
695 | 702 | | |
696 | 703 | | |
| 704 | + | |
| 705 | + | |
| 706 | + | |
| 707 | + | |
| 708 | + | |
| 709 | + | |
| 710 | + | |
| 711 | + | |
697 | 712 | | |
698 | 713 | | |
699 | 714 | | |
| |||
829 | 844 | | |
830 | 845 | | |
831 | 846 | | |
832 | | - | |
| 847 | + | |
| 848 | + | |
| 849 | + | |
833 | 850 | | |
834 | 851 | | |
835 | 852 | | |
| |||
839 | 856 | | |
840 | 857 | | |
841 | 858 | | |
842 | | - | |
| 859 | + | |
843 | 860 | | |
844 | 861 | | |
845 | 862 | | |
| |||
1910 | 1927 | | |
1911 | 1928 | | |
1912 | 1929 | | |
1913 | | - | |
| 1930 | + | |
| 1931 | + | |
| 1932 | + | |
| 1933 | + | |
| 1934 | + | |
| 1935 | + | |
| 1936 | + | |
1914 | 1937 | | |
1915 | 1938 | | |
1916 | 1939 | | |
| |||
1933 | 1956 | | |
1934 | 1957 | | |
1935 | 1958 | | |
| 1959 | + | |
1936 | 1960 | | |
1937 | 1961 | | |
1938 | 1962 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
784 | 784 | | |
785 | 785 | | |
786 | 786 | | |
| 787 | + | |
787 | 788 | | |
788 | 789 | | |
789 | 790 | | |
| |||
801 | 802 | | |
802 | 803 | | |
803 | 804 | | |
| 805 | + | |
804 | 806 | | |
805 | 807 | | |
806 | 808 | | |
| |||
823 | 825 | | |
824 | 826 | | |
825 | 827 | | |
| 828 | + | |
| 829 | + | |
| 830 | + | |
| 831 | + | |
| 832 | + | |
826 | 833 | | |
827 | 834 | | |
828 | | - | |
| 835 | + | |
| 836 | + | |
| 837 | + | |
829 | 838 | | |
830 | 839 | | |
831 | 840 | | |
832 | 841 | | |
833 | 842 | | |
834 | | - | |
| 843 | + | |
| 844 | + | |
| 845 | + | |
835 | 846 | | |
836 | 847 | | |
837 | 848 | | |
| |||
850 | 861 | | |
851 | 862 | | |
852 | 863 | | |
853 | | - | |
| 864 | + | |
854 | 865 | | |
855 | 866 | | |
856 | 867 | | |
| |||
863 | 874 | | |
864 | 875 | | |
865 | 876 | | |
| 877 | + | |
| 878 | + | |
| 879 | + | |
| 880 | + | |
| 881 | + | |
| 882 | + | |
| 883 | + | |
| 884 | + | |
| 885 | + | |
| 886 | + | |
| 887 | + | |
| 888 | + | |
| 889 | + | |
866 | 890 | | |
867 | 891 | | |
868 | 892 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
0 commit comments