« Back to History
karigar_login_create.php
|
20260723_000646.php
Initial Domain Snapshot
Copy Code
<?php /* ============================================================================= File: /erp/karigar_login_create.php Purpose: Create/Update login for existing karigars (not users table). Table: loom_karigar_login Notes: - Inline CSS removed. - Uses existing header/footer (which load main.css). - Original auth/login lines left intact (no auth logic changed). ============================================================================ */ error_reporting(E_ALL); ini_set('display_errors',1); /* ----- ORIGINAL AUTH (kept as-is; you insisted not to change auth) ----- */ require __DIR__ . '/modules/auth/auth.php'; require_login(); $u = auth_user(); $company_id = (int)$u['company_id']; $user_id = (int)$u['id']; $pdo = $GLOBALS['pdo'] ?? null; if(!$pdo){ require __DIR__ . '/core/db.php'; } /* page meta (header.php can use these) */ $PAGE_NAME = 'karigar_login_create'; $PAGE_TITLE = 'Create Karigar Login'; $PAGE_HEADING = 'Create Karigar Login'; /* ----- helpers ----- */ function h($s){ return htmlspecialchars((string)$s, ENT_QUOTES, 'UTF-8'); } function pv($k,$d=null){ return isset($_POST[$k])?trim((string)$_POST[$k]):$d; } function gv($k,$d=null){ return isset($_GET[$k])?trim((string)$_GET[$k]):$d; } /* ensure table exists (module-local change only) */ $pdo->exec("CREATE TABLE IF NOT EXISTS loom_karigar_login ( id BIGINT PRIMARY KEY AUTO_INCREMENT, company_id BIGINT NOT NULL, karigar_id BIGINT NOT NULL, username VARCHAR(80) NOT NULL, pass_hash VARCHAR(255) NOT NULL, active TINYINT(1) DEFAULT 1, last_login DATETIME NULL, last_ip VARCHAR(45) NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY uniq_user (company_id, username), UNIQUE KEY uniq_kid (company_id, karigar_id), INDEX(company_id, active) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4"); /* masters: karigars */ $KAR=[]; $st=$pdo->prepare("SELECT id, karigar_name, entry_name FROM loom_karigar_master WHERE company_id=? AND is_active=1 ORDER BY karigar_name"); $st->execute([$company_id]); foreach($st as $r){ $KAR[(int)$r['id']]=$r['karigar_name'].($r['entry_name']?' ('.$r['entry_name'].')':''); } /* submit */ $flash=''; if($_SERVER['REQUEST_METHOD']==='POST'){ $karigar_id=(int)pv('karigar_id',0); $username =pv('username',''); $password =pv('password',''); $active =(int)pv('active',1); if($karigar_id<=0){ $flash='Select karigar.'; } elseif($username===''){ $flash='Username required.'; } elseif(strlen($password)<4 && !isset($_POST['reset'])){ $flash='Password min 4 chars.'; } else{ $hash = strlen($password)>=4 ? password_hash($password, PASSWORD_BCRYPT) : null; // upsert by (company_id, karigar_id) $st=$pdo->prepare("SELECT id FROM loom_karigar_login WHERE company_id=? AND karigar_id=?"); $st->execute([$company_id,$karigar_id]); $id=$st->fetchColumn(); if($id){ $sql="UPDATE loom_karigar_login SET username=?, active=?"; $args=[$username,$active]; if($hash){ $sql.=", pass_hash=?"; $args[]=$hash; } $sql.=" WHERE id=? AND company_id=?"; $args[]=$id; $args[]=$company_id; $pdo->prepare($sql)->execute($args); $flash='Login updated.'; }else{ $pdo->prepare("INSERT INTO loom_karigar_login (company_id, karigar_id, username, pass_hash, active) VALUES (?,?,?,?,?)") ->execute([$company_id,$karigar_id,$username,$hash,$active]); $flash='Login created.'; } } } /* list existing logins */ $list=$pdo->prepare("SELECT l.id, l.karigar_id, l.username, l.active, k.karigar_name, k.entry_name FROM loom_karigar_login l JOIN loom_karigar_master k ON k.id=l.karigar_id AND k.company_id=l.company_id WHERE l.company_id=? ORDER BY k.karigar_name"); $list->execute([$company_id]); $rows=$list->fetchAll(PDO::FETCH_ASSOC); /* ----- include existing header (loads main.css; enforces auth per project pattern) ----- */ require_once __DIR__ . '/partials/header.php'; ?> <!-- Page markup — NO inline CSS; relies on main.css utilities --> <div class="card"> <?php if($flash): ?><div class="flash"><?= h($flash) ?></div><?php endif; ?> <form method="post" class="card kar-login-form"> <div class="row"> <div class="col"> <label>Karigar</label> <select name="karigar_id" required> <option value="">-- select --</option> <?php foreach($KAR as $id=>$nm): ?> <option value="<?= $id ?>" <?= (isset($_POST['karigar_id']) && (int)$_POST['karigar_id']===$id)?'selected':''; ?>><?= h($nm) ?></option> <?php endforeach; ?> </select> </div> <div class="col"> <label>Username</label> <input name="username" placeholder="e.g., mobile or code" required value="<?= h($_POST['username'] ?? '') ?>"> </div> <div class="col"> <label>Password</label> <input name="password" type="password" placeholder="min 4 chars"> </div> <div class="col"> <label>Status</label> <select name="active"> <option value="1" <?= (isset($_POST['active']) && (int)$_POST['active']===1)?'selected':''; ?>>Active</option> <option value="0" <?= (isset($_POST['active']) && (int)$_POST['active']===0)?'selected':''; ?>>Inactive</option> </select> </div> </div> <div class="mt-12"> <button class="btn" type="submit">Save Login</button> </div> <div class="help small mt-8"> Existing login par password change karna ho to same karigar choose karke new password bhej do; blank password bhejoge to unchanged rahega. </div> </form> </div> <div class="card"> <table class="table"> <thead><tr><th>Karigar</th><th>Username</th><th>Status</th></tr></thead> <tbody> <?php if(!empty($rows)): foreach($rows as $r): ?> <tr> <td><?= h($r['karigar_name'] . ($r['entry_name']?' ('.$r['entry_name'].')':'')) ?></td> <td><?= h($r['username']) ?></td> <td><?= $r['active'] ? 'Active' : 'Inactive' ?></td> </tr> <?php endforeach; else: ?> <tr><td colspan="3" class="small">No logins created yet.</td></tr> <?php endif; ?> </tbody> </table> </div> <?php /* ----- include existing footer ----- */ require_once __DIR__ . '/partials/footer.php';