文件
ParlzPackageManger/web/pmu/login.php
T
JGZYES 9822891394 feat(pmu): package upload/publish CLI + PHP service
Client src/pmu.c (independent binary, links out.c + sha256.c):
- pmu register <email> <pwd>: local arithmetic human-verification, then POST register.php.
- pmu login / logout / whoami: session token stored in ~/.pmu/config.
- pmu ./x.pdm (or 'pmu publish x.pdm'): parses Package/Version/Architecture from
  the .pdm, computes sha256, uploads raw bytes with a Bearer token; the server
  auto-generates <pkg>.json and stores the .pdm; duplicate names are rejected.

Server web/pmu/*.php:
- lib.php: JSON responses, token auth, data store in web/pmu/data/*.json (gitignored).
- register/login/logout/publish.php: account + session + upload + registry write
  (writes web/mirror/packages/<name>.json, copies .pdm, appends packages.json).
- Duplicate package names -> 409; missing/invalid token -> 401.

Also: .gitignore web/pmu/data/*.json; release.yml builds pmu per-platform.
2026-09-05 22:30:47 +08:00

17 行
537 B
PHP

<?php
/* web/pmu/login.php — verify credentials, issue a session token. */
define('PMM_SITE', 1);
require __DIR__ . '/lib.php';
$d = pmu_read_json();
$email = trim((string)($d['email'] ?? ''));
$pass = (string)($d['password'] ?? '');
$users = pmu_load('users.json');
if (!isset($users[$email]) || !password_verify($pass, $users[$email]['hash'])) pmu_fail('invalid credentials', 401);
$tok = pmu_token();
$s = pmu_load('sessions.json');
$s[$tok] = $email;
pmu_save('sessions.json', $s);
pmu_ok(['token' => $tok, 'email' => $email]);