Folder Protection - Releases

← App details

Nextcloud 32

Folder Protection 2.0.0
Release Details
UpdatedMarch 3, 2026, 11:28 p.m.
Changelog

Added

  • Group Folder support: protect group folders by their internal ID (/__groupfolders/N) without requiring the admin to be a group member
  • Admin panel: two-tab modal ("Group Folders" and "Custom Path") for adding protections; gracefully degrades to single form when the groupfolders app is not installed
  • API endpoint GET /api/groupfolders listing all group folders with their protection status
  • API endpoint GET /api/status now emits /files/<mountPoint> aliases for group folder paths so the web UI badge system can match them by visible name
  • ProtectionPropertyPlugin: removes the D flag from oc:permissions for protected folders so the Nextcloud desktop client does not attempt deletion locally

Changed

  • Desktop sync recovery: on a blocked DELETE or MOVE, the server updates the node's ETag and mtime so the sync client detects the server state as "newer" and restores the folder instead of showing a permanent sync error
  • Database migrations consolidated from versions 1–4 into a single clean migration (Version 2); existing installations are not affected
  • App version bumped to 2.0.0
  • Admin list now shows the visible mount point name alongside internal /__groupfolders/N paths, making it easier to remember which folder is which

Fixed

  • Group folder path detection in ProtectionPlugin and ProtectionPropertyPlugin: DAV nodes backed by a group folder storage are now correctly resolved to __groupfolders/N by traversing the storage wrapper chain via getWrapperStorage() / getFolderId()
  • Lock icon badge now appears on group folders in the web file browser (path alias fix in /api/status)
  • COPY operations on group folders are now correctly blocked
<hr />
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDDCCAvQCAhMBMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgyMzQ0WhcNMzYwNjA4MDgyMzQ0WjAcMRowGAYD
VQQDDBFmb2xkZXJfcHJvdGVjdGlvbjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC
AgoCggIBAJUdCdjxoMEL5WHoNag/igEUX46qUXwMc5MjvYVlM+KZEyogIujfVtoW
SAfpOm3TMUuVrvUWbwsL5u8kHIt+wf5h2E0/yWVmK/RUZ3o4Z+8aoyW1oXd4Zq+n
uLpY7a4Nt5B3/+4fz9ZPGroZ85d65KAaI1QPoykFi4shGKqgSSLLZHTRwMKtTfN0
smVLTq3PoAKip3O0E+bJtz8nO1lUxEP85ylhwgyrSueonSWRIzqhzOigOgQZT7bv
aXW+24tEcASNluHr0cGgJXaG1EPYizNa/I6U/0JNQf1j9/6JGCh82xwHByT+Bqky
OExQ4zRVTTUTbYQpQAZlUjsArREWwtRIAWtmiTdIoZV67DnrqsuOqU6oLD7kJ8Uz
MdnwA+/GQi4B47CObA5TUyab+gWeIequmb8aWSK2fueLxc9zOu1o9W2I3uzi77MP
e8xGOa/1ITUm/B5X5CjeeP3yqGiS5ktaiNVYiPK1lEL+8PC6MVJ683pNJOKPkVoy
o3BzlOUF0NPAJpcOLnK72l39zsMIskVf4/U/gGyrjBx+bFjFfPn0oPk5l6rIgKhq
WeTJNKRSfG00mVRm3RKVAw76YqDR8foPy2spWQvpjeLBDfDsbLpI5BTKqQ9E5hsF
KcCNRPANhk4ca6nDrVAvFoM96h/Akj7tp4wkBRF1oAcMk70TPpc1AgMBAAEwDQYJ
KoZIhvcNAQELBQADggEBADhN49GehzotzNbZPWXpDjcKZXpsg0wdmg8z1wzlxSI8
vtJZy78rmfKtdUxIIKbbdsDxVlZSxoocUettiatZec+/kA0BezRxsUyEnT0pkvnt
x9yLNryy1VSdPFQnk47n+m4c/dN9kk6wQAP34uPJ0plqOEEPs5XWjTdZnHXj9fUV
6+wYEgti/5/5B2oLkkQ+OtBOnkh56HjX6TrkMJWl1CmyVCByV/dqQxHdy67D5cjU
c3uP0NSign6Uxl9M2gGubVcAsMmVX65KSS+D9ky6XlDJ1o5UCxJNE++WMVAXqT8/
ECr8/iCgT/lcU6rr38hU86eTIbfatm5ajRPfBpmGZCQ=
-----END CERTIFICATE-----
SignatureMx1M2txg9CikJSB039Gzdt1lWJuUXCQK6Fmh4AHBZ2tKAR29JJIK/PSsp9CBQlv4rEdgl1zZ6D0wygZ2p92iWCZmRZSS4zYutwyly2JdmpTmBG/p9wZknCT9oytWn+SySOFHkp7rdgacVWYZD7Jpseu4LsQJttXB3NM2CWaJJ4K5jg9hhsHV6PVwFtplKXYKfD7kvw+3OdP6B2teC8gskO5W2rL73gyaJPJBihvd2r1zg+JfWlMWL0NluN0nV+O1c90qLiUo7zkaWh4YHhkgNKrAM/1gudeOv4+5YbTPUKMDWFQoz1b5dDCE63ND1WNMrwapRngc/ntaBVfPzDh8/4J6rciNPp7VrLnSFCQoYGzMkBqeZzXPd6Y9bEY3SG1bMcuNcgYLfOPe8Jv9JmGhwRhUaYWzhGppvf/5ou32+r9Y9LJCwtzYyksFplyWiecS0wXz2dq81OmPZZ5nc3BO6qFOPizauETbptJrxkSbkxXl/GKoD8GnAlOUzcfjfvXWIyxx43cFmTNdKeHg2pLZsu7w+t4AmwsVWSr/ikuvRGs/NsQSRr7DcT9obJfW85F/sbsKl0pPWInNbVJpQ6APESrE8/8Phz0rY0DOAG9qeSqNF/NKMQy5K/9WKDjSz8KQDKv8KpwZyeAc4F9yQaYaH1JzKMti2SCk0+EZ5pXJM8E=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<33.0.0
Minimum Integer bits32
PHP>=8.1.0

Nextcloud 31

Folder Protection 2.0.0
Release Details
UpdatedMarch 3, 2026, 11:28 p.m.
Changelog

Added

  • Group Folder support: protect group folders by their internal ID (/__groupfolders/N) without requiring the admin to be a group member
  • Admin panel: two-tab modal ("Group Folders" and "Custom Path") for adding protections; gracefully degrades to single form when the groupfolders app is not installed
  • API endpoint GET /api/groupfolders listing all group folders with their protection status
  • API endpoint GET /api/status now emits /files/<mountPoint> aliases for group folder paths so the web UI badge system can match them by visible name
  • ProtectionPropertyPlugin: removes the D flag from oc:permissions for protected folders so the Nextcloud desktop client does not attempt deletion locally

Changed

  • Desktop sync recovery: on a blocked DELETE or MOVE, the server updates the node's ETag and mtime so the sync client detects the server state as "newer" and restores the folder instead of showing a permanent sync error
  • Database migrations consolidated from versions 1–4 into a single clean migration (Version 2); existing installations are not affected
  • App version bumped to 2.0.0
  • Admin list now shows the visible mount point name alongside internal /__groupfolders/N paths, making it easier to remember which folder is which

Fixed

  • Group folder path detection in ProtectionPlugin and ProtectionPropertyPlugin: DAV nodes backed by a group folder storage are now correctly resolved to __groupfolders/N by traversing the storage wrapper chain via getWrapperStorage() / getFolderId()
  • Lock icon badge now appears on group folders in the web file browser (path alias fix in /api/status)
  • COPY operations on group folders are now correctly blocked
<hr />
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDDCCAvQCAhMBMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgyMzQ0WhcNMzYwNjA4MDgyMzQ0WjAcMRowGAYD
VQQDDBFmb2xkZXJfcHJvdGVjdGlvbjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC
AgoCggIBAJUdCdjxoMEL5WHoNag/igEUX46qUXwMc5MjvYVlM+KZEyogIujfVtoW
SAfpOm3TMUuVrvUWbwsL5u8kHIt+wf5h2E0/yWVmK/RUZ3o4Z+8aoyW1oXd4Zq+n
uLpY7a4Nt5B3/+4fz9ZPGroZ85d65KAaI1QPoykFi4shGKqgSSLLZHTRwMKtTfN0
smVLTq3PoAKip3O0E+bJtz8nO1lUxEP85ylhwgyrSueonSWRIzqhzOigOgQZT7bv
aXW+24tEcASNluHr0cGgJXaG1EPYizNa/I6U/0JNQf1j9/6JGCh82xwHByT+Bqky
OExQ4zRVTTUTbYQpQAZlUjsArREWwtRIAWtmiTdIoZV67DnrqsuOqU6oLD7kJ8Uz
MdnwA+/GQi4B47CObA5TUyab+gWeIequmb8aWSK2fueLxc9zOu1o9W2I3uzi77MP
e8xGOa/1ITUm/B5X5CjeeP3yqGiS5ktaiNVYiPK1lEL+8PC6MVJ683pNJOKPkVoy
o3BzlOUF0NPAJpcOLnK72l39zsMIskVf4/U/gGyrjBx+bFjFfPn0oPk5l6rIgKhq
WeTJNKRSfG00mVRm3RKVAw76YqDR8foPy2spWQvpjeLBDfDsbLpI5BTKqQ9E5hsF
KcCNRPANhk4ca6nDrVAvFoM96h/Akj7tp4wkBRF1oAcMk70TPpc1AgMBAAEwDQYJ
KoZIhvcNAQELBQADggEBADhN49GehzotzNbZPWXpDjcKZXpsg0wdmg8z1wzlxSI8
vtJZy78rmfKtdUxIIKbbdsDxVlZSxoocUettiatZec+/kA0BezRxsUyEnT0pkvnt
x9yLNryy1VSdPFQnk47n+m4c/dN9kk6wQAP34uPJ0plqOEEPs5XWjTdZnHXj9fUV
6+wYEgti/5/5B2oLkkQ+OtBOnkh56HjX6TrkMJWl1CmyVCByV/dqQxHdy67D5cjU
c3uP0NSign6Uxl9M2gGubVcAsMmVX65KSS+D9ky6XlDJ1o5UCxJNE++WMVAXqT8/
ECr8/iCgT/lcU6rr38hU86eTIbfatm5ajRPfBpmGZCQ=
-----END CERTIFICATE-----
SignatureMx1M2txg9CikJSB039Gzdt1lWJuUXCQK6Fmh4AHBZ2tKAR29JJIK/PSsp9CBQlv4rEdgl1zZ6D0wygZ2p92iWCZmRZSS4zYutwyly2JdmpTmBG/p9wZknCT9oytWn+SySOFHkp7rdgacVWYZD7Jpseu4LsQJttXB3NM2CWaJJ4K5jg9hhsHV6PVwFtplKXYKfD7kvw+3OdP6B2teC8gskO5W2rL73gyaJPJBihvd2r1zg+JfWlMWL0NluN0nV+O1c90qLiUo7zkaWh4YHhkgNKrAM/1gudeOv4+5YbTPUKMDWFQoz1b5dDCE63ND1WNMrwapRngc/ntaBVfPzDh8/4J6rciNPp7VrLnSFCQoYGzMkBqeZzXPd6Y9bEY3SG1bMcuNcgYLfOPe8Jv9JmGhwRhUaYWzhGppvf/5ou32+r9Y9LJCwtzYyksFplyWiecS0wXz2dq81OmPZZ5nc3BO6qFOPizauETbptJrxkSbkxXl/GKoD8GnAlOUzcfjfvXWIyxx43cFmTNdKeHg2pLZsu7w+t4AmwsVWSr/ikuvRGs/NsQSRr7DcT9obJfW85F/sbsKl0pPWInNbVJpQ6APESrE8/8Phz0rY0DOAG9qeSqNF/NKMQy5K/9WKDjSz8KQDKv8KpwZyeAc4F9yQaYaH1JzKMti2SCk0+EZ5pXJM8E=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<33.0.0
Minimum Integer bits32
PHP>=8.1.0

Nextcloud 30

Folder Protection 2.0.0
Release Details
UpdatedMarch 3, 2026, 11:28 p.m.
Changelog

Added

  • Group Folder support: protect group folders by their internal ID (/__groupfolders/N) without requiring the admin to be a group member
  • Admin panel: two-tab modal ("Group Folders" and "Custom Path") for adding protections; gracefully degrades to single form when the groupfolders app is not installed
  • API endpoint GET /api/groupfolders listing all group folders with their protection status
  • API endpoint GET /api/status now emits /files/<mountPoint> aliases for group folder paths so the web UI badge system can match them by visible name
  • ProtectionPropertyPlugin: removes the D flag from oc:permissions for protected folders so the Nextcloud desktop client does not attempt deletion locally

Changed

  • Desktop sync recovery: on a blocked DELETE or MOVE, the server updates the node's ETag and mtime so the sync client detects the server state as "newer" and restores the folder instead of showing a permanent sync error
  • Database migrations consolidated from versions 1–4 into a single clean migration (Version 2); existing installations are not affected
  • App version bumped to 2.0.0
  • Admin list now shows the visible mount point name alongside internal /__groupfolders/N paths, making it easier to remember which folder is which

Fixed

  • Group folder path detection in ProtectionPlugin and ProtectionPropertyPlugin: DAV nodes backed by a group folder storage are now correctly resolved to __groupfolders/N by traversing the storage wrapper chain via getWrapperStorage() / getFolderId()
  • Lock icon badge now appears on group folders in the web file browser (path alias fix in /api/status)
  • COPY operations on group folders are now correctly blocked
<hr />
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDDCCAvQCAhMBMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgyMzQ0WhcNMzYwNjA4MDgyMzQ0WjAcMRowGAYD
VQQDDBFmb2xkZXJfcHJvdGVjdGlvbjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC
AgoCggIBAJUdCdjxoMEL5WHoNag/igEUX46qUXwMc5MjvYVlM+KZEyogIujfVtoW
SAfpOm3TMUuVrvUWbwsL5u8kHIt+wf5h2E0/yWVmK/RUZ3o4Z+8aoyW1oXd4Zq+n
uLpY7a4Nt5B3/+4fz9ZPGroZ85d65KAaI1QPoykFi4shGKqgSSLLZHTRwMKtTfN0
smVLTq3PoAKip3O0E+bJtz8nO1lUxEP85ylhwgyrSueonSWRIzqhzOigOgQZT7bv
aXW+24tEcASNluHr0cGgJXaG1EPYizNa/I6U/0JNQf1j9/6JGCh82xwHByT+Bqky
OExQ4zRVTTUTbYQpQAZlUjsArREWwtRIAWtmiTdIoZV67DnrqsuOqU6oLD7kJ8Uz
MdnwA+/GQi4B47CObA5TUyab+gWeIequmb8aWSK2fueLxc9zOu1o9W2I3uzi77MP
e8xGOa/1ITUm/B5X5CjeeP3yqGiS5ktaiNVYiPK1lEL+8PC6MVJ683pNJOKPkVoy
o3BzlOUF0NPAJpcOLnK72l39zsMIskVf4/U/gGyrjBx+bFjFfPn0oPk5l6rIgKhq
WeTJNKRSfG00mVRm3RKVAw76YqDR8foPy2spWQvpjeLBDfDsbLpI5BTKqQ9E5hsF
KcCNRPANhk4ca6nDrVAvFoM96h/Akj7tp4wkBRF1oAcMk70TPpc1AgMBAAEwDQYJ
KoZIhvcNAQELBQADggEBADhN49GehzotzNbZPWXpDjcKZXpsg0wdmg8z1wzlxSI8
vtJZy78rmfKtdUxIIKbbdsDxVlZSxoocUettiatZec+/kA0BezRxsUyEnT0pkvnt
x9yLNryy1VSdPFQnk47n+m4c/dN9kk6wQAP34uPJ0plqOEEPs5XWjTdZnHXj9fUV
6+wYEgti/5/5B2oLkkQ+OtBOnkh56HjX6TrkMJWl1CmyVCByV/dqQxHdy67D5cjU
c3uP0NSign6Uxl9M2gGubVcAsMmVX65KSS+D9ky6XlDJ1o5UCxJNE++WMVAXqT8/
ECr8/iCgT/lcU6rr38hU86eTIbfatm5ajRPfBpmGZCQ=
-----END CERTIFICATE-----
SignatureMx1M2txg9CikJSB039Gzdt1lWJuUXCQK6Fmh4AHBZ2tKAR29JJIK/PSsp9CBQlv4rEdgl1zZ6D0wygZ2p92iWCZmRZSS4zYutwyly2JdmpTmBG/p9wZknCT9oytWn+SySOFHkp7rdgacVWYZD7Jpseu4LsQJttXB3NM2CWaJJ4K5jg9hhsHV6PVwFtplKXYKfD7kvw+3OdP6B2teC8gskO5W2rL73gyaJPJBihvd2r1zg+JfWlMWL0NluN0nV+O1c90qLiUo7zkaWh4YHhkgNKrAM/1gudeOv4+5YbTPUKMDWFQoz1b5dDCE63ND1WNMrwapRngc/ntaBVfPzDh8/4J6rciNPp7VrLnSFCQoYGzMkBqeZzXPd6Y9bEY3SG1bMcuNcgYLfOPe8Jv9JmGhwRhUaYWzhGppvf/5ou32+r9Y9LJCwtzYyksFplyWiecS0wXz2dq81OmPZZ5nc3BO6qFOPizauETbptJrxkSbkxXl/GKoD8GnAlOUzcfjfvXWIyxx43cFmTNdKeHg2pLZsu7w+t4AmwsVWSr/ikuvRGs/NsQSRr7DcT9obJfW85F/sbsKl0pPWInNbVJpQ6APESrE8/8Phz0rY0DOAG9qeSqNF/NKMQy5K/9WKDjSz8KQDKv8KpwZyeAc4F9yQaYaH1JzKMti2SCk0+EZ5pXJM8E=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<33.0.0
Minimum Integer bits32
PHP>=8.1.0

Nextcloud 29

Folder Protection 2.0.0
Release Details
UpdatedMarch 3, 2026, 11:28 p.m.
Changelog

Added

  • Group Folder support: protect group folders by their internal ID (/__groupfolders/N) without requiring the admin to be a group member
  • Admin panel: two-tab modal ("Group Folders" and "Custom Path") for adding protections; gracefully degrades to single form when the groupfolders app is not installed
  • API endpoint GET /api/groupfolders listing all group folders with their protection status
  • API endpoint GET /api/status now emits /files/<mountPoint> aliases for group folder paths so the web UI badge system can match them by visible name
  • ProtectionPropertyPlugin: removes the D flag from oc:permissions for protected folders so the Nextcloud desktop client does not attempt deletion locally

Changed

  • Desktop sync recovery: on a blocked DELETE or MOVE, the server updates the node's ETag and mtime so the sync client detects the server state as "newer" and restores the folder instead of showing a permanent sync error
  • Database migrations consolidated from versions 1–4 into a single clean migration (Version 2); existing installations are not affected
  • App version bumped to 2.0.0
  • Admin list now shows the visible mount point name alongside internal /__groupfolders/N paths, making it easier to remember which folder is which

Fixed

  • Group folder path detection in ProtectionPlugin and ProtectionPropertyPlugin: DAV nodes backed by a group folder storage are now correctly resolved to __groupfolders/N by traversing the storage wrapper chain via getWrapperStorage() / getFolderId()
  • Lock icon badge now appears on group folders in the web file browser (path alias fix in /api/status)
  • COPY operations on group folders are now correctly blocked
<hr />
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDDCCAvQCAhMBMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgyMzQ0WhcNMzYwNjA4MDgyMzQ0WjAcMRowGAYD
VQQDDBFmb2xkZXJfcHJvdGVjdGlvbjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC
AgoCggIBAJUdCdjxoMEL5WHoNag/igEUX46qUXwMc5MjvYVlM+KZEyogIujfVtoW
SAfpOm3TMUuVrvUWbwsL5u8kHIt+wf5h2E0/yWVmK/RUZ3o4Z+8aoyW1oXd4Zq+n
uLpY7a4Nt5B3/+4fz9ZPGroZ85d65KAaI1QPoykFi4shGKqgSSLLZHTRwMKtTfN0
smVLTq3PoAKip3O0E+bJtz8nO1lUxEP85ylhwgyrSueonSWRIzqhzOigOgQZT7bv
aXW+24tEcASNluHr0cGgJXaG1EPYizNa/I6U/0JNQf1j9/6JGCh82xwHByT+Bqky
OExQ4zRVTTUTbYQpQAZlUjsArREWwtRIAWtmiTdIoZV67DnrqsuOqU6oLD7kJ8Uz
MdnwA+/GQi4B47CObA5TUyab+gWeIequmb8aWSK2fueLxc9zOu1o9W2I3uzi77MP
e8xGOa/1ITUm/B5X5CjeeP3yqGiS5ktaiNVYiPK1lEL+8PC6MVJ683pNJOKPkVoy
o3BzlOUF0NPAJpcOLnK72l39zsMIskVf4/U/gGyrjBx+bFjFfPn0oPk5l6rIgKhq
WeTJNKRSfG00mVRm3RKVAw76YqDR8foPy2spWQvpjeLBDfDsbLpI5BTKqQ9E5hsF
KcCNRPANhk4ca6nDrVAvFoM96h/Akj7tp4wkBRF1oAcMk70TPpc1AgMBAAEwDQYJ
KoZIhvcNAQELBQADggEBADhN49GehzotzNbZPWXpDjcKZXpsg0wdmg8z1wzlxSI8
vtJZy78rmfKtdUxIIKbbdsDxVlZSxoocUettiatZec+/kA0BezRxsUyEnT0pkvnt
x9yLNryy1VSdPFQnk47n+m4c/dN9kk6wQAP34uPJ0plqOEEPs5XWjTdZnHXj9fUV
6+wYEgti/5/5B2oLkkQ+OtBOnkh56HjX6TrkMJWl1CmyVCByV/dqQxHdy67D5cjU
c3uP0NSign6Uxl9M2gGubVcAsMmVX65KSS+D9ky6XlDJ1o5UCxJNE++WMVAXqT8/
ECr8/iCgT/lcU6rr38hU86eTIbfatm5ajRPfBpmGZCQ=
-----END CERTIFICATE-----
SignatureMx1M2txg9CikJSB039Gzdt1lWJuUXCQK6Fmh4AHBZ2tKAR29JJIK/PSsp9CBQlv4rEdgl1zZ6D0wygZ2p92iWCZmRZSS4zYutwyly2JdmpTmBG/p9wZknCT9oytWn+SySOFHkp7rdgacVWYZD7Jpseu4LsQJttXB3NM2CWaJJ4K5jg9hhsHV6PVwFtplKXYKfD7kvw+3OdP6B2teC8gskO5W2rL73gyaJPJBihvd2r1zg+JfWlMWL0NluN0nV+O1c90qLiUo7zkaWh4YHhkgNKrAM/1gudeOv4+5YbTPUKMDWFQoz1b5dDCE63ND1WNMrwapRngc/ntaBVfPzDh8/4J6rciNPp7VrLnSFCQoYGzMkBqeZzXPd6Y9bEY3SG1bMcuNcgYLfOPe8Jv9JmGhwRhUaYWzhGppvf/5ou32+r9Y9LJCwtzYyksFplyWiecS0wXz2dq81OmPZZ5nc3BO6qFOPizauETbptJrxkSbkxXl/GKoD8GnAlOUzcfjfvXWIyxx43cFmTNdKeHg2pLZsu7w+t4AmwsVWSr/ikuvRGs/NsQSRr7DcT9obJfW85F/sbsKl0pPWInNbVJpQ6APESrE8/8Phz0rY0DOAG9qeSqNF/NKMQy5K/9WKDjSz8KQDKv8KpwZyeAc4F9yQaYaH1JzKMti2SCk0+EZ5pXJM8E=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<33.0.0
Minimum Integer bits32
PHP>=8.1.0

Nextcloud 28

Folder Protection 2.0.0
Release Details
UpdatedMarch 3, 2026, 11:28 p.m.
Changelog

Added

  • Group Folder support: protect group folders by their internal ID (/__groupfolders/N) without requiring the admin to be a group member
  • Admin panel: two-tab modal ("Group Folders" and "Custom Path") for adding protections; gracefully degrades to single form when the groupfolders app is not installed
  • API endpoint GET /api/groupfolders listing all group folders with their protection status
  • API endpoint GET /api/status now emits /files/<mountPoint> aliases for group folder paths so the web UI badge system can match them by visible name
  • ProtectionPropertyPlugin: removes the D flag from oc:permissions for protected folders so the Nextcloud desktop client does not attempt deletion locally

Changed

  • Desktop sync recovery: on a blocked DELETE or MOVE, the server updates the node's ETag and mtime so the sync client detects the server state as "newer" and restores the folder instead of showing a permanent sync error
  • Database migrations consolidated from versions 1–4 into a single clean migration (Version 2); existing installations are not affected
  • App version bumped to 2.0.0
  • Admin list now shows the visible mount point name alongside internal /__groupfolders/N paths, making it easier to remember which folder is which

Fixed

  • Group folder path detection in ProtectionPlugin and ProtectionPropertyPlugin: DAV nodes backed by a group folder storage are now correctly resolved to __groupfolders/N by traversing the storage wrapper chain via getWrapperStorage() / getFolderId()
  • Lock icon badge now appears on group folders in the web file browser (path alias fix in /api/status)
  • COPY operations on group folders are now correctly blocked
<hr />
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDDCCAvQCAhMBMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgyMzQ0WhcNMzYwNjA4MDgyMzQ0WjAcMRowGAYD
VQQDDBFmb2xkZXJfcHJvdGVjdGlvbjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC
AgoCggIBAJUdCdjxoMEL5WHoNag/igEUX46qUXwMc5MjvYVlM+KZEyogIujfVtoW
SAfpOm3TMUuVrvUWbwsL5u8kHIt+wf5h2E0/yWVmK/RUZ3o4Z+8aoyW1oXd4Zq+n
uLpY7a4Nt5B3/+4fz9ZPGroZ85d65KAaI1QPoykFi4shGKqgSSLLZHTRwMKtTfN0
smVLTq3PoAKip3O0E+bJtz8nO1lUxEP85ylhwgyrSueonSWRIzqhzOigOgQZT7bv
aXW+24tEcASNluHr0cGgJXaG1EPYizNa/I6U/0JNQf1j9/6JGCh82xwHByT+Bqky
OExQ4zRVTTUTbYQpQAZlUjsArREWwtRIAWtmiTdIoZV67DnrqsuOqU6oLD7kJ8Uz
MdnwA+/GQi4B47CObA5TUyab+gWeIequmb8aWSK2fueLxc9zOu1o9W2I3uzi77MP
e8xGOa/1ITUm/B5X5CjeeP3yqGiS5ktaiNVYiPK1lEL+8PC6MVJ683pNJOKPkVoy
o3BzlOUF0NPAJpcOLnK72l39zsMIskVf4/U/gGyrjBx+bFjFfPn0oPk5l6rIgKhq
WeTJNKRSfG00mVRm3RKVAw76YqDR8foPy2spWQvpjeLBDfDsbLpI5BTKqQ9E5hsF
KcCNRPANhk4ca6nDrVAvFoM96h/Akj7tp4wkBRF1oAcMk70TPpc1AgMBAAEwDQYJ
KoZIhvcNAQELBQADggEBADhN49GehzotzNbZPWXpDjcKZXpsg0wdmg8z1wzlxSI8
vtJZy78rmfKtdUxIIKbbdsDxVlZSxoocUettiatZec+/kA0BezRxsUyEnT0pkvnt
x9yLNryy1VSdPFQnk47n+m4c/dN9kk6wQAP34uPJ0plqOEEPs5XWjTdZnHXj9fUV
6+wYEgti/5/5B2oLkkQ+OtBOnkh56HjX6TrkMJWl1CmyVCByV/dqQxHdy67D5cjU
c3uP0NSign6Uxl9M2gGubVcAsMmVX65KSS+D9ky6XlDJ1o5UCxJNE++WMVAXqT8/
ECr8/iCgT/lcU6rr38hU86eTIbfatm5ajRPfBpmGZCQ=
-----END CERTIFICATE-----
SignatureMx1M2txg9CikJSB039Gzdt1lWJuUXCQK6Fmh4AHBZ2tKAR29JJIK/PSsp9CBQlv4rEdgl1zZ6D0wygZ2p92iWCZmRZSS4zYutwyly2JdmpTmBG/p9wZknCT9oytWn+SySOFHkp7rdgacVWYZD7Jpseu4LsQJttXB3NM2CWaJJ4K5jg9hhsHV6PVwFtplKXYKfD7kvw+3OdP6B2teC8gskO5W2rL73gyaJPJBihvd2r1zg+JfWlMWL0NluN0nV+O1c90qLiUo7zkaWh4YHhkgNKrAM/1gudeOv4+5YbTPUKMDWFQoz1b5dDCE63ND1WNMrwapRngc/ntaBVfPzDh8/4J6rciNPp7VrLnSFCQoYGzMkBqeZzXPd6Y9bEY3SG1bMcuNcgYLfOPe8Jv9JmGhwRhUaYWzhGppvf/5ou32+r9Y9LJCwtzYyksFplyWiecS0wXz2dq81OmPZZ5nc3BO6qFOPizauETbptJrxkSbkxXl/GKoD8GnAlOUzcfjfvXWIyxx43cFmTNdKeHg2pLZsu7w+t4AmwsVWSr/ikuvRGs/NsQSRr7DcT9obJfW85F/sbsKl0pPWInNbVJpQ6APESrE8/8Phz0rY0DOAG9qeSqNF/NKMQy5K/9WKDjSz8KQDKv8KpwZyeAc4F9yQaYaH1JzKMti2SCk0+EZ5pXJM8E=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<33.0.0
Minimum Integer bits32
PHP>=8.1.0