WP Manifestindependent plugin directory
manifest / integrations / api-volunteer-manager

Volunteer Manager WP Registry grade D+. High-severity findings · 2 findingsWP RegistryHigh-severity findings · 2 findingsOpen the reportD+

Managing data for volunteers and their assignments

★ 1stars
5.5kcomposer installs
0.5.1latest · 8mo ago

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/helsingborg-stad/api-volunteer-manager/archive/refs/heads/master.zip

On Packagist as helsingborg-stad/api-volunteer-manager:

composer require helsingborg-stad/api-volunteer-manager
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

Contributors Forks Stargazers Issues License

Volunteer Manager

Creates a api that may be used to manage volunteer assignments
Report Bug · Request Feature

Table of Contents

About Volunteer Manager

Volunteer Manager Screen Shot

Here's a blank template to get started:

Built With

  • PHP
  • NPM
  • Webpack
  • Modularity

Getting Started

To get a local copy up and running follow these simple steps.

Prerequisites

This is an example of how to list things you need to use the software and how to install them (mac os).

  • composer
    brew install composer
  • npm
    brew install node

    Installation

  1. Clone the repo
    git clone https://github.com/helsingborg-stad/api-volunteer-manager.git
  2. Install and build NPM packages
    npm install && npm run build
  3. Install composer packages
    composer install

Usage

Use this space to show useful examples of how a project can be used. Additional screenshots, code examples and demos work well in this space. You may also link to more resources.

For more examples, please refer to the Documentation

Deploy

Instructions for deploys.

Development environment

Devcontainer can be used for development.

  1. To start the development environment, open the project in Visual Studio Code and then select "Reopen in Container" from the quick actions menu.
  2. When the container is started, run the following commands to install the necessary dependencies: php build.php.
  3. Then run composer install.
  4. You should then be able to access the project in your browser. You will find the exposed port in the ports section Visual Studio Code.
  5. When accessing the project in the browser, you will need to go through the WordPress installation process.
  6. Install required plugin Advanced Custom Fields PRO.
  7. Activate the plugin Volunteer Manager.

Constants

Google Maps API

Google Maps API key with Maps JavaScript API enabled.

define('GOOGLE_API_KEY', 'xyz');

Roadmap

See the open issues for a list of proposed features (and known issues).

Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the MIT License.

Acknowledgements

Releases

6 releases.

Tag
Published
0.5.1 latest
Feb 23, 2026 8mo ago
Dec 5, 2024 1 year ago
Sep 13, 2024 2 years ago
Sep 10, 2024 2 years ago
Sep 9, 2024 2 years ago
May 2, 2024 2 years ago

These releases are tags only. The author does not attach a packaged zip, so there are no download counts to report.

D+ grade

Security

Volunteer Manager 1.0.0 · audited by WP Registry

High-severity findings.

2 high
Audited release
1.0.0
Findings
2
Worst severity
high
Content hash
2b3042413cd65160ca558138…

Findings

  • high Any logged-in user can export all volunteer national identity numbers as CSV

    missing_capability

    Employee::addHooks attaches triggerCSVDownload to admin_init. handleEmployeeExport() runs whenever $_GET['export_users'] equals csv, with no current_user_can, no nonce, and no post-type/page check. admin_init fires for every wp-admin request, including a Subscriber hitting /wp-admin/?export_users=csv (the handler exit()s before the dashboard capability redirect). queryEmployees() loads every employee post (post_status any) and streams first name, surname, Swedish national identity number, email, and phone as exported_volunteers_YYYY-MM-DD.csv. Observable consequence: a Subscriber (or any other logged-in role) bulk-downloads personnummer and contact PII for every volunteer in the system.

    source/php/PostType/Employee/EmployeeExport.php:24-36

    Recommendation

    Gate the export on a capability such as edit_others_posts or manage_options, verify a nonce from the export button, and only run on the employee list screen. Do not hook a download that calls exit() on unconditional admin_init.

  • high Broken nonce and missing capability allow any logged-in user to change any post's status

    missing_capability

    admin_post_update_post_status maps to Assignment::updatePostStatus. UrlBuilder creates the nonce with action update_post_status, but the handler verifies edit_post_status, so wp_verify_nonce always fails. On failure the code wp_redirect()s without exit, so execution continues into get_post($postId)/wp_update_post() regardless. There is no current_user_can('edit_post') (or even a check that the post is an assignment). admin-post.php is reachable by every logged-in user, including Subscriber, via GET. Observable consequence: a Subscriber or a CSRF'd admin can set post_status to publish, draft, or trash for an arbitrary post_id (publish attacker-created pending assignments, unpublish or trash pages/posts). Combined with the public assignment REST, this is a publish primitive for unauthenticated content.

    source/php/PostType/Assignment/Assignment.php:127-151

    Recommendation

    Verify nonce with the same action used in UrlBuilder (update_post_status), exit after a failed check, require current_user_can('edit_post', $postId), allow only assignment posts, and whitelist post_status to publish/draft.

WP Registry hashes the installable build and reports on that exact bytes-for-bytes copy. Embargoed findings are withheld until they are disclosed, so a clean verdict means nothing public is outstanding. WP Manifest does not audit code itself.