public function createPassword($user) { $model = new password(); if ($model->load(Yii::$app->request->post())) { if ($model->validate()) { // form inputs are valid, do something here $user->verified = 1; $user->setPassword($model->password); $user->save(); Yii::$app->user->login($user, 3600 * 24 * 30); Yii::$app->getSession()->setFlash('info', 'Welcome to News Portal'); return $this->goHome(); } } return $this->render('password', ['model' => $model]); }
/** * Behandle nytt passord */ protected function solve_pass() { // lagre passord if (isset($_POST['save_pass'])) { // kontroller alle feltene $pass_new = trim(postval("pass_new")); $pass_repeat = trim(postval("pass_repeat")); // kontroller at alle feltene er fylt ut if ($pass_new == "" || $pass_repeat == "") { ess::$b->page->add_message("Alle feltene må fylles ut.", "error"); } elseif ($pass_new != $pass_repeat) { ess::$b->page->add_message("De nye passordene var ikke like.", "error"); } elseif (mb_strlen($pass_new) < 6) { ess::$b->page->add_message("Det nye passordet må inneholde minimum 6 tegn.", "error"); } elseif (password::validate($pass_new, password::LEVEL_LOGIN) != 0) { ess::$b->page->add_message("Du må velge et vanskeligere passord.", "error"); } elseif (password::verify_hash($pass_new, login::$user->data['u_bank_auth'], 'bank_auth')) { ess::$b->page->add_message("Velg et annet passord enn du har i banken."); } else { \Kofradia\DB::get()->exec("UPDATE users SET u_pass = "******", u_pass_change = NULL WHERE u_id = " . login::$user->id); // melding ess::$b->page->add_message("Du har nå lagret et nytt passord for brukeren din."); putlog("NOTICE", "%bPASSORD%b: %u" . login::$user->player->data['up_name'] . "%u lagret nytt passord på sin bruker (var nullstilt). " . ess::$s['path'] . "/min_side?u_id=" . login::$user->id); // send ut e-post for å informere $email = new email(); $email->text = 'Hei, Det er nå blitt opprettet et nytt passord fra ' . $_SERVER['REMOTE_ADDR'] . ' (' . $_SERVER['HTTP_USER_AGENT'] . '). Bruker ID: ' . login::$user->data['u_id'] . ' E-post: ' . login::$user->data['u_email'] . ' Vi sender selvfølgelig ikke ditt nye passord på e-post. Det skal du kunne selv! -- www.kofradia.no'; $email->send(login::$user->data['u_email'], "Nytt passord"); // logg ut alle andre brukere \Kofradia\DB::get()->exec("UPDATE sessions SET ses_active = 0, ses_logout_time = " . time() . " WHERE ses_active = 1 AND ses_u_id = " . login::$user->id . " AND ses_id != " . login::$info['ses_id']); redirect::handle(); } } ess::$b->page->add_js_domready('$("lockpass").focus();'); echo ' <div class="bg1_c small"> <h1 class="bg1">Lagre nytt passord<span class="left"></span><span class="right"></span></h1> <p class="h_left"><a href="' . htmlspecialchars($this->url) . '">Tilbake</a></p> <div class="bg1"> <p>Ditt passord har blitt nullstilt. Du vil ikke kunne logge inn uten å måtte benytte <i>glemt passord</i> funksjonen før du har opprettet et nytt passord.</p> <form action="" method="post" autocomplete="off"> <dl class="dd_right dl_2x center" style="width: 80%"> <dt>Nytt passord</dt> <dd><input type="password" class="styled w100" name="pass_new" id="lockpass" /></dd> <dt>Gjenta nytt passord</dt> <dd><input type="password" class="styled w100" name="pass_repeat" /></dd> </dl> <p class="c">' . show_sbutton("Lagre passordet", 'name="save_pass"') . '</p> </form> </div> </div>'; }
/** * Bytte passord for banken */ protected function auth_change() { // lagre passord? if (isset($_POST['passord_old']) && isset($_POST['passord_1']) && isset($_POST['passord_2'])) { $pass0 = postval("passord_old"); $pass1 = postval("passord_1"); $pass2 = postval("passord_2"); $hash = password::hash($pass1, null, "bank_auth"); // kontroller det gamle passord if (isset(login::$extended_access['authed']) && !password::verify_hash($pass0, $this->up->user->data['u_bank_auth'], "bank_auth")) { ess::$b->page->add_message("Det gamle passordet var ikke korrekt.", "error"); } else { $error = password::validate($pass1, password::LEVEL_LOGIN); if ($pass1 != $pass2) { ess::$b->page->add_message("De nye passordene var ikke like.", "error"); } elseif (mb_strlen($pass1) < 6) { ess::$b->page->add_message("Det nye passordet må inneholde 6 eller flere tegn.", "error"); } elseif ($error > 0) { ess::$b->page->add_message("Du må velge et vanskeligere passord.", "error"); } else { // samme som nåværende? if ($pass0 == $pass1) { ess::$b->page->add_message("Passordene var identisk med det forrige passordet. Du må velge et nytt passord.", "error"); } elseif (password::verify_hash($pass1, $this->up->user->data['u_pass'], "user")) { ess::$b->page->add_message("Bankpassordet kan ikke være det samme som passordet til brukerkontoen.", "error"); } else { // bytt passordet \Kofradia\DB::get()->exec("UPDATE users SET u_bank_auth = " . \Kofradia\DB::quote($hash) . " WHERE u_id = " . $this->up->user->id); ess::$b->page->add_message("Du endret ditt bankpassord."); redirect::handle(); } } } } ess::$b->page->add_js_domready('$("passold").focus();'); // vis formen echo ' <div class="bg1_c xsmall"> <h1 class="bg1">Endre bankpassord<span class="left"></span><span class="right"></span></h1> <div class="bg1"> <boxes /> <p class="c"><a href="banken">Tilbake</a></p> <form action="" method="post">' . (isset(login::$extended_access['authed']) ? ' <p>Du er logget inn med utvidere tilganger. Dette passordet brukes kun hvis du er logget ut av utvidere tilganger.</p>' : '') . ' <dl class="dd_right dl_2x">' . (!isset(login::$extended_access['authed']) ? ' <dt>Nåværende passord</dt> <dd><input type="password" class="styled w100" name="passord_old" id="passold" /></dd> ' : '') . ' <dt>Nytt Passord</dt> <dd><input type="password" class="styled w100" name="passord_1" /></dd> <dt>Gjenta nytt passord</dt> <dd><input type="password" class="styled w100" name="passord_2" /></dd> </dl> <p class="c">' . show_sbutton("Endre passord") . '</p> </form> </div> </div>'; ess::$b->page->load(); }
/** * Innstillinger */ protected static function page_set() { global $__server; $subpage2 = getval("b"); redirect::store(page_min_side::addr(NULL, $subpage2 != "" ? "b=" . $subpage2 : '')); ess::$b->page->add_title("Innstillinger"); ess::$b->page->add_css(' .minside_set_links .active { color: #CCFF00 }'); echo ' <p class="c minside_set_links"> <a href="' . htmlspecialchars(page_min_side::addr(NULL, "")) . '"' . ($subpage2 == "" ? ' class="active"' : '') . '>Generelt</a> | <a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=email")) . '"' . ($subpage2 == "email" ? ' class="active"' : '') . '>Skift e-postadresse</a> | <a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=pass")) . '"' . ($subpage2 == "pass" ? ' class="active"' : '') . '>Skift passord</a> </p>'; // endre passord? if ($subpage2 == "pass") { ess::$b->page->add_title("Endre passord"); // må logge inn med utvidede tilganger if (isset(login::$extended_access) && !login::$extended_access['authed']) { echo ' <div class="bg1_c center" style="width: 350px"> <h1 class="bg1">Skift passord<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> <boxes /> <p>Du må logge inn med utvidede tilganger for å få tilgang til denne funksjonen.</p> </div> </div>'; } elseif (access::has("mod") && page_min_side::$active_user->id != login::$user->id) { // kan ikke endre denne brukerens passord? if (page_min_side::$active_user->data['u_access_level'] != 0 && page_min_side::$active_user->data['u_access_level'] != 1 && !access::has("sadmin")) { echo ' <div class="bg1_c" style="width: 350px"> <h1 class="bg1">Skift passord<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> <p>Du har ikke rettigheter til å endre passordet til denne brukeren. Kun senioradministrator kan gjøre det.</p> </div> </div>'; } else { // lagre passordet? if (isset($_POST['pass'])) { $pass = trim(postval("pass")); $error = password::validate($pass, password::LEVEL_LOGIN); $log = trim(postval("log")); if ($error > 0) { $errors = array(); if ($error & password::ERROR_SHORT) { $errors[] = 'Passordet er for kort. Må være minimum 8 tegn.'; } if ($error & password::ERROR_NONCAP || $error & password::ERROR_CAP || $error & password::ERROR_NUM) { $errors[] = 'Passordet må inneholde både små bokstaver, store bokstaver og tall.'; } ess::$b->page->add_message(implode('<br />', $errors), "error"); } elseif ($log == "") { ess::$b->page->add_message("Mangler logg melding.", "error"); } else { // samme passord? if (password::verify_hash($pass, page_min_side::$active_user->data['u_pass'], 'user')) { ess::$b->page->add_message("Passordet er det samme som nåværende. Velg et annet.", "error"); } else { $pass_new = password::hash($pass, null, 'user'); // lagre endringer \Kofradia\DB::get()->exec("UPDATE users SET u_pass = "******" WHERE u_id = " . page_min_side::$active_user->id); // legg til crewlogg crewlog::log("user_password", page_min_side::$active_player->id, $log, array("pass_old" => page_min_side::$active_user->data['u_pass'], "pass_new" => $pass_new)); ess::$b->page->add_message("Passordet ble endret."); } } } echo ' <div class="bg1_c" style="width: 350px"> <h1 class="bg1">Endre passord<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> <p class="r">Tilgangsnivå: Moderator</p> <p>Her endrer du passordet til ' . page_min_side::$active_player->profile_link() . '.</p> <form action="" method="post" autocomplete="off"> <dl class="dd_right dl_2x"> <dt>Nytt passord</dt> <dd><input type="password" value="" name="pass" id="pass" class="styled w120" /></dd> <dt>Begrunnelse for endring</dt> <dd><textarea name="log" id="log" cols="30" rows="5">' . htmlspecialchars(postval("log")) . '</textarea></dd> <dd>' . show_sbutton("Lagre") . '</dd> </dl> </form> </div> </div>'; } } else { // lagre passord if (isset($_POST['save_pass'])) { // kontroller alle feltene $pass_old = trim(postval("pass_old")); $pass_new = trim(postval("pass_new")); $pass_repeat = trim(postval("pass_repeat")); // kontroller at alle feltene er fylt ut if ($pass_old == "" || $pass_new == "" || $pass_repeat == "") { ess::$b->page->add_message("Alle feltene må fylles ut.", "error"); } elseif (!password::verify_hash($pass_old, page_min_side::$active_user->data['u_pass'], 'user')) { ess::$b->page->add_message("Det gamle passordet stemte ikke.", "error"); } elseif ($pass_new != $pass_repeat) { ess::$b->page->add_message("De nye passordene var ikke like.", "error"); } elseif ($pass_old == $pass_new) { ess::$b->page->add_message("Du må velge et nytt passord.", "error"); } elseif (mb_strlen($pass_new) < 6) { ess::$b->page->add_message("Det nye passordet må inneholde minimum 6 tegn.", "error"); } elseif (password::validate($pass_new, password::LEVEL_LOGIN) != 0) { ess::$b->page->add_message("Du må velge et vanskeligere passord.", "error"); } elseif (password::verify_hash($pass_new, page_min_side::$active_user->data['u_bank_auth'], 'bank_auth')) { ess::$b->page->add_message("Velg et annet passord enn du har i banken."); } else { \Kofradia\DB::get()->exec("UPDATE users SET u_pass = "******" WHERE u_id = " . page_min_side::$active_user->id); // melding ess::$b->page->add_message("Passordet ble endret. Alle andre steder brukeren var logget inn er nå logget ut."); putlog("NOTICE", "%bPASSORD-ENDRING%b: %u" . page_min_side::$active_player->data['up_name'] . "%u byttet passordet på sin bruker. {$__server['path']}/min_side?u_id=" . page_min_side::$active_user->id); // logg ut alle andre brukere \Kofradia\DB::get()->exec("UPDATE sessions SET ses_active = 0, ses_logout_time = " . time() . " WHERE ses_active = 1 AND ses_u_id = " . page_min_side::$active_user->id . " AND ses_id != " . login::$info['ses_id']); redirect::handle(); } } echo ' <div class="bg1_c" style="width: 300px"> <h1 class="bg1">Skift passord<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> <p>For å kunne skifte passord må alle 3 feltene være fylt ut.</p> <form action="" method="post" autocomplete="off"> <dl class="dd_right dl_2x"> <dt>Nåværende passord</dt> <dd><input type="password" class="styled w100" name="pass_old" /></dd> <dt>Nytt passord</dt> <dd><input type="password" class="styled w100" name="pass_new" /></dd> <dt>Gjenta nytt passord</dt> <dd><input type="password" class="styled w100" name="pass_repeat" /></dd> </dl> <p class="c">' . show_sbutton("Skift passordet", 'name="save_pass"') . '</p> </form> </div> </div>'; } } elseif ($subpage2 == "email") { // skifte e-postadresse? /* Trinn i skifte e-postadresse: 1. Skriver inn ønsket e-postadresse man vil skifte til 2. E-post blir sendt til gammel e-postadresse med info og link til validering 3. Validering av gammel e-postadresse (step 1) 4. E-post blir sendt til ny e-postadresse med info og link til validering 5. E-potadresse blir skiftet (step 2) */ ess::$b->page->add_title("Skifte e-postadresse"); // må logge inn med utvidede tilganger if (isset(login::$extended_access) && !login::$extended_access['authed']) { echo ' <div class="bg1_c center" style="width: 350px"> <h1 class="bg1">Skifte e-postadresse<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> <boxes /> <p>Du må logge inn med utvidede tilganger for å få tilgang til denne funksjonen.</p> </div> </div>'; } elseif (access::has("mod") && (page_min_side::$active_user->id != login::$user->id || isset($_GET['o']))) { // kan ikke endre denne brukerens e-postadresse? if (page_min_side::$active_user->data['u_access_level'] != 0 && page_min_side::$active_user->data['u_access_level'] != 1 && !access::has("sadmin")) { echo ' <div class="bg1_c" style="width: 350px"> <h1 class="bg1">Skifte e-postadresse<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> <p>Du har ikke rettigheter til å skifte e-postadressen til denne brukeren. Kun senioradministrator kan gjøre det.</p> </div> </div>'; } else { // lagre ny e-post? $email_ex = false; if (isset($_POST['email'])) { $email = trim(postval("email")); $log = trim(postval("log")); // sjekk om e-postadressen allerede er i bruk $result = \Kofradia\DB::get()->query("SELECT u_id, up_id, up_name, up_access_level FROM users LEFT JOIN users_players ON up_id = u_active_up_id WHERE u_email = " . \Kofradia\DB::quote($email) . " AND u_access_level != 0"); $email_ex = $result->fetch(); // ikke gyldig e-postadresse? if (!game::validemail($email)) { ess::$b->page->add_message("Ugyldig e-postadresse.", "error"); } elseif (empty($log)) { ess::$b->page->add_message("Du må fylle inn en loggmelding.", "error"); } elseif ($email == page_min_side::$active_user->data['u_email']) { ess::$b->page->add_message("Du må skrive inn en ny e-postadresse."); } elseif ($email_ex && !isset($_POST['ignore_ex'])) { ess::$b->page->add_message("Denne e-posten er allerede i bruk av " . game::profile_link($email_ex['up_id'], $email_ex['up_name'], $email_ex['up_access_level']) . ". Bekreft at du ønsker å la begge brukerene ha denne e-postadresse, evt. endre til en annen e-postadresse."); } else { // lagre endringer \Kofradia\DB::get()->exec("UPDATE users SET u_email = " . \Kofradia\DB::quote($email) . " WHERE u_id = " . page_min_side::$active_user->id); // legg til crewlogg crewlog::log("user_email", page_min_side::$active_player->id, $log, array("email_old" => page_min_side::$active_user->data['u_email'], "email_new" => $email)); // fjern mulige params for egen bytting av e-post page_min_side::$active_user->params->remove("change_email_step"); page_min_side::$active_user->params->remove("change_email_new_address"); page_min_side::$active_user->params->remove("change_email_hash"); page_min_side::$active_user->params->remove("change_email_time", true); ess::$b->page->add_message("E-postadressen ble endret."); redirect::handle(page_min_side::addr("")); } } echo ' <div class="bg1_c center" style="width: 350px"> <h1 class="bg1">Skifte e-postadresse<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> <boxes /> <form action="" method="post" autocomplete="off"> <dl class="dd_right dl_2x"> <dt>Nåværende e-postadresse</dt> <dd>' . htmlspecialchars(page_min_side::$active_user->data['u_email']) . '</dd> <dt>Ny e-postadresse</dt> <dd><input type="text" value="' . htmlspecialchars(postval("email", page_min_side::$active_user->data['u_email'])) . '" name="email" id="email" class="styled w150" /></dd> <dt>Begrunnelse for endring</dt> <dd><textarea name="log" id="log" cols="30" rows="5">' . htmlspecialchars(postval("log")) . '</textarea></dd> </dl> <p class="c">' . ($email_ex ? show_sbutton("Lagre ny e-postadresse, ignorer advarsel", 'name="ignore_ex"') : show_sbutton("Lagre ny e-postadresse")) . '</p> </form> </div> </div>'; } } else { // blokkert fra å skifte e-postadressen? $blokkering = blokkeringer::check(blokkeringer::TYPE_EPOST); if ($blokkering) { ess::$b->page->add_message("Du er blokkert fra å skifte e-postadressen din. Blokkeringen varer til " . ess::$b->date->get($blokkering['ub_time_expire'])->format(date::FORMAT_SEC) . ".<br /><b>Begrunnelse:</b> " . game::format_data($blokkering['ub_reason'], "bb-opt", "Ingen begrunnelse gitt."), "error"); redirect::handle(page_min_side::addr("")); } // hent status $status = page_min_side::$active_user->params->get("change_email_step", false); $email_addr = page_min_side::$active_user->params->get("change_email_new_address"); $html_pre = ' <div class="bg1_c center" style="width: 350px"> <h1 class="bg1">Skifte e-postadresse<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> <boxes />'; $html_suf = ' </div> </div>'; $in_use = false; $expire = false; if ($status) { // se om e-postadressen allerede er i bruk $result = \Kofradia\DB::get()->query("SELECT COUNT(u_id) FROM users WHERE u_email = " . \Kofradia\DB::quote($email_addr) . " AND u_access_level != 0"); $in_use = $result->fetchColumn(0) > 0; } elseif ($status && page_min_side::$active_user->params->get("change_email_time") + 86400 < time()) { $expire = true; } // avbryte? if (isset($_POST['abort']) && $status || $in_use || $expire) { if ($in_use) { // logg putlog("CREWCHAN", "%u" . page_min_side::$active_player->data['up_name'] . "%u kunne ikke skifte e-postadresse fordi den nye adressen er i bruk (ville skifte fra %u" . page_min_side::$active_user->data['u_email'] . "%u til %u" . $email_addr . "%u) {$__server['path']}/min_side?u_id=" . page_min_side::$active_user->id); // info ess::$b->page->add_message("E-postadressen <b>" . htmlspecialchars($email_addr) . "</b> har blitt benyttet av en annen bruker. Du kan ikke skifte til denne e-postadressen.", "error"); } elseif ($expire) { // logg putlog("CREWCHAN", "%u" . page_min_side::$active_player->data['up_name'] . "%u kunne ikke skifte e-postadresse fordi det ble brukt for lang tid (egentlig startet " . ess::$b->date->get(page_min_side::$active_user->params->get("change_email_time"))->format() . ") (ville skifte fra %u" . page_min_side::$active_user->data['u_email'] . "%u til %u{$email_addr}%u) {$__server['path']}/min_side?u_id=" . page_min_side::$active_user->id); // info ess::$b->page->add_message("Du brukte for lang tid med å bekrefte e-postadressen. Skifting av e-post er avbrutt.", "error"); } else { // logg putlog("CREWCHAN", "%u" . page_min_side::$active_player->data['up_name'] . "%u avbrøt skifting av e-postadresse (ville skifte fra %u" . page_min_side::$active_user->data['u_email'] . "%u til %u{$email_addr}%u) {$__server['path']}/min_side?u_id=" . page_min_side::$active_user->id); // info ess::$b->page->add_message("Du har avbrutt skifting av e-postadresse."); } // fjern fra params page_min_side::$active_user->params->remove("change_email_step"); page_min_side::$active_user->params->remove("change_email_new_address"); page_min_side::$active_user->params->remove("change_email_hash"); page_min_side::$active_user->params->remove("change_email_time", true); redirect::handle(); } // behandle trinn 1 if (isset($_GET['old'])) { // er ikke på trinn 1 eller feil kode? if ($status != 1 || page_min_side::$active_user->params->get("change_email_hash") != $_GET['old']) { ess::$b->page->add_message("E-posten du har blitt henvist fra gjelder ikke lenger.", "error"); redirect::handle(); } // gå videre til neste trinn? if (isset($_POST['continue']) && validate_sid(false)) { // generer kode $hash = mb_substr(md5(uniqid("kofradia_")), 0, 16); // sett status page_min_side::$active_user->params->update("change_email_step", 2); page_min_side::$active_user->params->update("change_email_new_address", $email_addr); page_min_side::$active_user->params->update("change_email_hash", $hash); page_min_side::$active_user->params->update("change_email_time", time(), true); // send e-post til nye e-posten $email = new email(); $email->text = 'Hei, Du har bedt om å skifte e-postadressen for din spiller ' . page_min_side::$active_player->data['up_name'] . ' på ' . $__server['path'] . '. Den gamle e-postadressen har blitt bekreftet. Gammel/nåværende e-postadresse: ' . page_min_side::$active_user->data['u_email'] . ' Ny e-postadresse: ' . $email_addr . ' For å godta eller avslå dette gå inn på følgende adresse: ' . $__server['path'] . '/min_side?u&a=set&b=email&new=' . $hash . ' -- www.kofradia.no'; $email->headers['X-SMafia-IP'] = $_SERVER['REMOTE_ADDR']; $email->headers['Reply-To'] = "*****@*****.**"; $email->send($email_addr, "Skifte e-postadresse (bekrefte ny adresse)"); // logg putlog("CREWCHAN", "%u" . page_min_side::$active_player->data['up_name'] . "%u har bekreftet gammel e-postadresse (%u" . page_min_side::$active_user->data['u_email'] . "%u) og skal nå bekrefte %u{$email_addr}%u {$__server['path']}/min_side?u_id=" . page_min_side::$active_user->id); // info ess::$b->page->add_message("En e-post har blitt sendt til <b>" . htmlspecialchars($email_addr) . "</b> for bekreftelse."); redirect::handle(); } echo $html_pre . ' <p>Du har bekreftet nåværende e-postadresse.</p> <dl class="dd_right"> <dt>Nåværende e-postadresse</dt> <dd>' . htmlspecialchars(page_min_side::$active_user->data['u_email']) . '</dd> <dt>Ny ønsket e-postadresse</dt> <dd>' . htmlspecialchars($email_addr) . '</dd> </dl> <p><u>Du må nå bekrefte den nye e-postadressen.</u></p> <form action="" method="post"> <input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" /> <p class="c"> ' . show_sbutton("Send e-post for bekreftelse", 'name="continue"') . ' ' . show_sbutton("Avbryt", 'name="abort"') . ' </p> </form>' . $html_suf; } elseif (isset($_GET['new'])) { // er ikke på trinn 2 eller feil kode? if ($status != 2 || page_min_side::$active_user->params->get("change_email_hash") != $_GET['new']) { ess::$b->page->add_message("E-posten du har blitt henvist fra gjelder ikke lenger.", "error"); redirect::handle(); } // fullføre skifting av e-postadresse? if (isset($_POST['confirm']) && validate_sid(false)) { $note = trim(postval("note")); // mangler logg? if ($note == "") { ess::$b->page->add_message("Mangler begrunnelse."); } else { // lagre endringer \Kofradia\DB::get()->exec("UPDATE users SET u_email = " . \Kofradia\DB::quote($email_addr) . " WHERE u_id = " . page_min_side::$active_user->id); // legg til crewlogg crewlog::log("user_email", page_min_side::$active_player->id, $note, array("email_old" => page_min_side::$active_user->data['u_email'], "email_new" => $email_addr)); // logg putlog("CREWCHAN", "%u" . page_min_side::$active_player->data['up_name'] . "%u skiftet e-postadresse fra %u" . page_min_side::$active_user->data['u_email'] . "%u til %u" . $email_addr . "%u {$__server['path']}/min_side?u_id=" . page_min_side::$active_user->id); // info ess::$b->page->add_message("E-postadressen ble skiftet fra <b>" . htmlspecialchars(page_min_side::$active_user->data['u_email']) . "</b> til <b>" . htmlspecialchars($email_addr) . "</b>."); // fjern fra params page_min_side::$active_user->params->remove("change_email_step"); page_min_side::$active_user->params->remove("change_email_new_address"); page_min_side::$active_user->params->remove("change_email_hash"); page_min_side::$active_user->params->remove("change_email_time", true); redirect::handle(); } } echo $html_pre . ' <p>Du har bekreftet både den nåværende og den nye e-postadressen.</p> <dl class="dd_right"> <dt>Nåværende e-postadresse</dt> <dd>' . htmlspecialchars(page_min_side::$active_user->data['u_email']) . '</dd> <dt>Ny ønsket e-postadresse</dt> <dd><b><u>' . htmlspecialchars($email_addr) . '</u></b></dd> </dl> <form action="" method="post"> <input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" /> <dl class="dd_right"> <dt>Begrunnelse</dt> <dd><textarea name="note" rows="5" cols="10" class="w200">' . htmlspecialchars(postval("note")) . '</textarea></dd> </dl> <p class="c"> ' . show_sbutton("Skift e-postadresse", 'name="confirm"') . ' ' . show_sbutton("Avbryt", 'name="abort"') . ' </p> </form>' . $html_suf; } elseif (!$status) { // velge ny e-postadresse if (isset($_POST['new_email']) && validate_sid(false)) { // se om e-postadressen allerede er i bruk $result = \Kofradia\DB::get()->query("SELECT COUNT(u_id) FROM users WHERE u_email = " . \Kofradia\DB::quote($_POST['new_email']) . " AND u_access_level != 0"); $in_use = $result->fetchColumn(0) > 0; // valider e-post $email_addr = $_POST['new_email']; $email_valid = game::validemail($email_addr); // kontroller om e-postadressen eller domenet er blokkert if ($email_valid) { $pos = mb_strpos($email_addr, "@"); $domain = mb_strtolower(mb_substr($email_addr, $pos + 1)); $result = \Kofradia\DB::get()->query("SELECT eb_id, eb_type FROM email_blacklist WHERE (eb_type = 'address' AND eb_value = " . \Kofradia\DB::quote($email_addr) . ") OR (eb_type = 'domain' AND eb_value = " . \Kofradia\DB::quote($domain) . ") ORDER BY eb_type = 'address' LIMIT 1"); $error_email = $result->fetch(); } // ugyldig e-postadresse? if (!$email_valid) { ess::$b->page->add_message("Ugyldig e-postadresse.", "error"); } elseif ($in_use) { putlog("CREWCHAN", "%u" . page_min_side::$active_player->data['up_name'] . "%u forsøkte å skifte e-postadresse fra %u" . page_min_side::$active_user->data['u_email'] . "%u til %u{$email_addr}%u som allerde er i bruk {$__server['path']}/min_side?u_id=" . page_min_side::$active_user->id); ess::$b->page->add_message("E-posten du ønsker å skifte til er allerede benyttet av en annen bruker."); } elseif ($error_email) { if ($error_email['eb_type'] == "address") { ess::$b->page->add_message("E-postadressen <b>" . htmlspecialchars($email_addr) . "</b> er blokkert og kan ikke benyttes.", "error"); } else { ess::$b->page->add_message("Domenet <b>" . htmlspecialchars($domain) . "</b> er blokkert og kan ikke benyttes.", "error"); } } else { // generer kode $hash = mb_substr(md5(uniqid("kofradia_")), 0, 16); // sett status page_min_side::$active_user->params->update("change_email_step", 1); page_min_side::$active_user->params->update("change_email_new_address", $email_addr); page_min_side::$active_user->params->update("change_email_hash", $hash); page_min_side::$active_user->params->update("change_email_time", time(), true); // send e-post til gamle e-posten $email = new email(); $email->text = 'Hei, Du har bedt om å skifte e-postadressen for din spiller ' . page_min_side::$active_player->data['up_name'] . ' på ' . $__server['path'] . '. Gammel/nåværende e-postadresse: ' . page_min_side::$active_user->data['u_email'] . ' Ny e-postadresse: ' . $email_addr . ' For å godta eller avslå dette gå inn på følgende adresse: ' . $__server['path'] . '/min_side?u&a=set&b=email&old=' . $hash . ' -- www.kofradia.no'; $email->headers['X-SMafia-IP'] = $_SERVER['REMOTE_ADDR']; $email->headers['Reply-To'] = "*****@*****.**"; $email->send(page_min_side::$active_user->data['u_email'], "Skifte e-postadresse (bekrefte gammel adresse)"); // logg putlog("CREWCHAN", "%u" . page_min_side::$active_player->data['up_name'] . "%u har startet skifting av e-postadresse fra %u" . page_min_side::$active_user->data['u_email'] . "%u til %u{$email_addr}%u {$__server['path']}/min_side?u_id=" . page_min_side::$active_user->id); // info ess::$b->page->add_message("En e-post har blitt sendt til <b>" . htmlspecialchars(page_min_side::$active_user->data['u_email']) . "</b> for bekreftelse."); redirect::handle(); } } echo $html_pre . ' <form action="" method="post"> <input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" /> <dl class="dd_right"> <dt>Nåværende e-postadresse</dt> <dd>' . htmlspecialchars(page_min_side::$active_user->data['u_email']) . '</dd> <dt>Ny ønsket e-postadresse</dt> <dd><input type="text" name="new_email" value="' . htmlspecialchars(postval("new_email", "")) . '" class="styled w150" /></dd> </dl> <p>Du vil motta en e-post for bekreftelse på den gamle e-postadressen, for deretter å få en bekreftelse på den nye før e-postadressen blir skiftet.</p> <p>Husk at du ikke har lov til å gi bort eller selge brukeren til andre personer. <u>Brukeren skal ikke brukes av andre enn deg.</u></p> <p class="c">' . show_sbutton("Fortsett") . '</p>' . (access::has("mod") ? ' <p class="c"><a href="' . htmlspecialchars(page_min_side::addr("set", "b=email&o")) . '">Endre e-postadresse som moderator</a></p>' : '') . ' </form>' . $html_suf; } else { echo $html_pre . ' <p>Du er i ferd med å skifte e-postadresse for brukeren din.</p> <p>Informasjon:</p> <dl class="dd_right"> <dt>Nåværende e-postadresse</dt> <dd>' . htmlspecialchars(page_min_side::$active_user->data['u_email']) . '</dd> <dt>Ny ønsket e-postadresse</dt> <dd>' . htmlspecialchars($email_addr) . '</dd> <dt>Status</dt> <dd>' . ($status == 1 ? 'Venter på bekreftelse av <b>gammel</b> e-postadresse.' : 'Venter på bekreftelse av <b>ny</b> e-postadresse') . '</dd> </dl> <form action="" method="post"> <p class="c">' . show_sbutton("Avbryt", 'name="abort"') . '</p> </form>' . $html_suf; } } } elseif ($subpage2 == "") { // lagre innstillinger? if (isset($_POST['save'])) { if (page_min_side::$active_user->id != login::$user->id && !access::has("sadmin")) { ess::$b->page->add_message("Du har ikke tilgang til å redigere disse innstillingene for andre brukere.", "error"); redirect::handle(); } $show_signature = LOCK ? page_min_side::$active_user->data['u_forum_show_signature'] : (isset($_POST['show_signature']) ? 1 : 0); $forum_page = LOCK ? page_min_side::$active_user->data['u_forum_per_page'] : max(5, min(100, intval(postval("forum_page")))); $force_ssl = isset($_POST['force_ssl']) ? 1 : 0; $music_auto = LOCK ? page_min_side::$active_user->data['u_music_auto'] : (isset($_POST['music']) && $_POST['music'] == "auto" ? 1 : 0); $music_manual = LOCK ? page_min_side::$active_user->params->get("music_manual") ? true : false : isset($_POST['music']) && $_POST['music'] == "manual"; $hide_progressbar_left = LOCK ? page_min_side::$active_user->params->get("hide_progressbar_left") ? true : false : isset($_POST['hide_progressbar_left']); $changed = false; $user_change = array(); if ($force_ssl != page_min_side::$active_user->data['u_force_ssl']) { $user_change[] = "u_force_ssl = {$force_ssl}"; } if ($music_auto != page_min_side::$active_user->data['u_music_auto']) { $user_change[] = "u_music_auto = {$music_auto}"; } if ($show_signature != page_min_side::$active_user->data['u_forum_show_signature']) { $user_change[] = "u_forum_show_signature = {$show_signature}"; } if ($forum_page != page_min_side::$active_user->data['u_forum_per_page']) { $user_change[] = "u_forum_per_page = {$forum_page}"; } if ($hide_progressbar_left != (page_min_side::$active_user->params->get("hide_progressbar_left") ? true : false)) { if (!$hide_progressbar_left) { page_min_side::$active_user->params->remove("hide_progressbar_left"); } else { page_min_side::$active_user->params->update("hide_progressbar_left", "1"); } $changed = true; } if ($music_manual != (page_min_side::$active_user->params->get("music_manual") ? true : false)) { if (!$music_manual) { page_min_side::$active_user->params->remove("music_manual"); } else { page_min_side::$active_user->params->update("music_manual", "1"); } $changed = true; } if ($changed) { page_min_side::$active_user->params->commit(); } // noe som skal endres? if (count($user_change) > 0) { \Kofradia\DB::get()->exec("UPDATE users SET " . implode(", ", $user_change) . " WHERE u_id = " . page_min_side::$active_user->id); $changed = true; } if ($changed) { ess::$b->page->add_message("Endringene ble lagret."); } else { ess::$b->page->add_message("Ingen endringer ble utført."); } redirect::handle(); } ess::$b->page->add_css(' .minside_set { margin: 0 20px; background-color: #222222; padding: 1px 5px } .minside_set p { margin: 5px 0 }'); echo ' <div class="bg1_c" style="width: 400px"> <h1 class="bg1">Innstillinger<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> <boxes /> <form action="" method="post"> <p><b>Forumalternativer:</b></p> <div class="minside_set"> <p><input type="checkbox" name="show_signature" id="show_signature"' . (page_min_side::$active_user->data['u_forum_show_signature'] != 0 ? ' checked="checked"' : '') . ' /><label for="show_signature"> Vis signaturer i forumet</label></p> <p>Antall foruminnlegg per side: <input type="text" name="forum_page" maxlength="2" value="' . page_min_side::$active_user->data['u_forum_per_page'] . '" class="styled w40" /></p> </div> <p><b>Sikkerhet:</b></p> <div class="minside_set"> <p><input type="checkbox" name="force_ssl" id="force_ssl"' . (page_min_side::$active_user->data['u_force_ssl'] != 0 ? ' checked="checked"' : '') . ' /><label for="force_ssl"> Alltid benytt sikker tilkobling (SSL)</label>' . (page_min_side::$active_user->data['u_access_level'] != 0 && page_min_side::$active_user->data['u_access_level'] != 1 ? ' <span class="dark">(Som crew benytter du uansett alltid SSL.)</span>' : '') . '</p> </div> <p><b>Spillinnstillinger:</b></p> <div class="minside_set"> <p><input type="checkbox" name="hide_progressbar_left" id="hide_progressbar_left"' . (page_min_side::$active_user->params->get("hide_progressbar_left") ? ' checked="checked"' : '') . ' /><label for="hide_progressbar_left"> Skjul «Rank» og «Wanted nivå» fra toppen av siden</label></p> </div> <p><b>Annet:</b></p> <div class="minside_set"> <p>Musikkalternativer:<br /> <input type="radio" name="music" value="auto" id="music_auto"' . (!page_min_side::$active_user->params->get("music_manual") && page_min_side::$active_user->data['u_music_auto'] ? ' checked="checked"' : '') . ' /><label for="music_auto"> Spill av musikk automatisk</label><br /> <input type="radio" name="music" value="preload" id="music_preload"' . (!page_min_side::$active_user->params->get("music_manual") && !page_min_side::$active_user->data['u_music_auto'] ? ' checked="checked"' : '') . ' /><label for="music_preload"> Last inn musikkfil, men ikke spill av automatisk</label><br /> <input type="radio" name="music" value="manual" id="music_manual"' . (page_min_side::$active_user->params->get("music_manual") ? ' checked="checked"' : '') . ' /><label for="music_manual"> Ikke last inn musikkfil -- trykk på spiller for å laste inn</label> </p> </div>' . (page_min_side::$active_user->id != login::$user->id ? ' <p class="c">Du har ikke tilgang til å endre disse innstillingene</p>' : ' <p class="c">' . show_sbutton("Lagre endringer", 'name="save"') . '</p>') . ' </form> </div> </div>'; } }
redirect::handle($_GET['orign'], redirect::SERVER); } redirect::handle(); } // endre passord? if (isset($_GET['change'])) { // sjekk if (isset($_POST['password_current']) && isset($_POST['password']) && isset($_POST['password_repeat'])) { redirect::store("extended_access?change"); // kontroller nåværende passord if (!extended_access_verify_password($_POST['password_current'])) { $_base->page->add_message("Nåværende passord stemte ikke.", "error"); redirect::handle(); } // oppfyller passordet kravet? $error = password::validate($_POST['password'], password::LEVEL_STRONG); if ($error != 0) { $_base->page->add_message("Passordet oppnådde ikke følgende krav: " . ucfirst(implode(", ", password::format_errors($error))), "error"); redirect::handle(); } // samme som brukerpassordet? if (password::verify_hash($_POST['password'], login::$user->data['u_pass'], "user")) { $_base->page->add_message("Passordet kan ikke være det samme som passordet til brukeren.", "error"); redirect::handle(); } // samme som bankpassordet? if (password::verify_hash($_POST['password'], login::$user->data['u_bank_auth'], "bank_auth")) { $_base->page->add_message("Passordet kan ikke være det samme som passordet til banken.", "error"); redirect::handle(); } // er passordene like?