Example #1
0
 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]);
 }
Example #2
0
    /**
     * 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>';
    }
Example #3
0
    /**
     * 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();
    }
Example #4
0
    /**
     * 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 &laquo;Rank&raquo; og &laquo;Wanted nivå&raquo; 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>';
        }
    }
Example #5
0
        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?