{"adoption": {"forks": 353, "observed_at": "2026-08-28T04:04:25.779357+00:00", "stars": 1338}, "canonical_url": "https://ross.abutalabs.com/products/self-service-password", "card": {"archived": false, "artifact_type": "application", "description": "Web interface to change and reset password in an LDAP directory", "domain": ["security", "self-hosted", "web-development", "developer-tools"], "enriched": true, "function": ["auth", "web-framework", "http-server", "email", "security"], "health_score": 99, "homepage": "https://self-service-password.readthedocs.io/en/latest/", "language": "PHP", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "stable", "member_repos": ["ltb-project/self-service-password"], "name": "ltb-project/self-service-password", "platform": ["php", "self-hosted"], "pushed_at": "2026-08-25T06:47:28+00:00", "repo": "ltb-project/self-service-password", "stars": 1338, "tags": ["ldap", "password-reset", "self-service", "active-directory", "samba", "password-policy", "php-application", "web-server", "docker", "linux"], "topics": ["ldap", "password", "self-service", "self-service-password"], "urls": [], "use_cases": ["let users reset forgotten LDAP passwords via email token", "allow employees to change their Active Directory password from a web portal", "enforce a password policy with complexity and haveibeenpwned checks", "enable password reset by SMS code", "let users update their SSH public key stored in LDAP", "self-service update of mail address and phone number in LDAP"], "what_it_is": "Self Service Password is a PHP web application that lets users change and reset their own passwords in an LDAP directory, including Active Directory. It supports multiple reset channels (mail tokens, SMS, security questions), local password policies, Samba/AD modes, and a REST API.", "when_to_avoid": ["your identities live in a non-LDAP backend like a SQL database or SaaS IdP", "you need a full identity management suite rather than just password self-service", "you cannot run PHP or don't want to maintain a web application for this"], "when_to_choose": ["your organization authenticates against LDAP or Active Directory and wants to cut helpdesk password tickets", "you need multiple reset channels (mail, SMS, security questions) with a configurable password policy", "you want a self-hosted, Docker-deployable PHP app with Debian/Red Hat packages"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/self-service-password", "repo": "ltb-project/self-service-password", "role": "main", "score": 91}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:25.779357+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:44:00.159391+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fb9d52956338defeb092817879e9c7df9740c963364a8b920053cbed3f3d8bdd", "fetched_at": "2026-08-28T04:04:25.779357+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ltb-project/self-service-password"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:25.779357+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:44:00.159391+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fb9d52956338defeb092817879e9c7df9740c963364a8b920053cbed3f3d8bdd", "fetched_at": "2026-08-28T04:04:25.779357+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ltb-project/self-service-password"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:44:00.159391+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fb9d52956338defeb092817879e9c7df9740c963364a8b920053cbed3f3d8bdd", "fetched_at": "2026-08-28T04:04:25.779357+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ltb-project/self-service-password"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:04:25.779357+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:25.779357+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:25.779357+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:44:00.159391+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fb9d52956338defeb092817879e9c7df9740c963364a8b920053cbed3f3d8bdd", "fetched_at": "2026-08-28T04:04:25.779357+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ltb-project/self-service-password"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:25.779357+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:25.779357+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:44:00.159391+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fb9d52956338defeb092817879e9c7df9740c963364a8b920053cbed3f3d8bdd", "fetched_at": "2026-08-28T04:04:25.779357+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ltb-project/self-service-password"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:25.779357+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:25.779357+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:25.779357+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:44:00.159391+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fb9d52956338defeb092817879e9c7df9740c963364a8b920053cbed3f3d8bdd", "fetched_at": "2026-08-28T04:04:25.779357+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ltb-project/self-service-password"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:25.779357+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:25.779357+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:44:00.159391+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fb9d52956338defeb092817879e9c7df9740c963364a8b920053cbed3f3d8bdd", "fetched_at": "2026-08-28T04:04:25.779357+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ltb-project/self-service-password"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:44:00.159391+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fb9d52956338defeb092817879e9c7df9740c963364a8b920053cbed3f3d8bdd", "fetched_at": "2026-08-28T04:04:25.779357+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ltb-project/self-service-password"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:44:00.159391+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fb9d52956338defeb092817879e9c7df9740c963364a8b920053cbed3f3d8bdd", "fetched_at": "2026-08-28T04:04:25.779357+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ltb-project/self-service-password"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:44:00.159391+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fb9d52956338defeb092817879e9c7df9740c963364a8b920053cbed3f3d8bdd", "fetched_at": "2026-08-28T04:04:25.779357+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ltb-project/self-service-password"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 76}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3669, "days_push": 8, "days_rel": 80, "gap_med": 72, "n_releases_24m": 6}, "score": 91, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}