datatable.directory codebase
https://datatable.directory/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
1.8 KiB
77 lines
1.8 KiB
<?php
|
|
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
|
|
use App\Models\EmailConfirmation;
|
|
use Hash;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Validation\Rule;
|
|
use MightyPork\Utils\Str;
|
|
|
|
class AccountController extends Controller
|
|
{
|
|
|
|
public function editAccount()
|
|
{
|
|
return view('profile.edit-account', ['user' => user()]);
|
|
}
|
|
public function storeAccount(Request $request)
|
|
{
|
|
$input = $this->validate($request, [
|
|
'name' => [
|
|
'required',
|
|
VALI_NAME,
|
|
Rule::unique('users')->ignoreModel(\user()),
|
|
],
|
|
'email' => [
|
|
'required',
|
|
VALI_EMAIL,
|
|
Rule::unique('users')->ignoreModel(\user()),
|
|
],
|
|
'new_password' => ['nullable', 'confirmed', VALI_PASSWORD],
|
|
]);
|
|
|
|
$user = user();
|
|
|
|
if ($input->email != $user->email) {
|
|
$confirmation = EmailConfirmation::create([
|
|
'user_id' => $user->id,
|
|
'email' => $input->email,
|
|
'token' => Str::random(60),
|
|
]);
|
|
|
|
flash()->warning("New e-mail confirmation sent to $input->email.")->important();
|
|
|
|
// TODO send the e-mail
|
|
|
|
unset($input->email);
|
|
}
|
|
|
|
$user->fill($input->all());
|
|
|
|
if ($input->has('new_password')) {
|
|
$user->password = Hash::make($input->new_password);
|
|
|
|
flash()->warning('Password changed');
|
|
}
|
|
|
|
$user->save();
|
|
|
|
flash()->success('Settings saved');
|
|
|
|
return back();
|
|
}
|
|
|
|
public function forgetSocialLogin($id)
|
|
{
|
|
$identity = user()->socialIdentities()->where('id', $id)->first();
|
|
if (null === $identity) {
|
|
abort(404, "No such identity");
|
|
}
|
|
|
|
$identity->delete();
|
|
return redirect(route('profile.manage-oauth'));
|
|
}
|
|
}
|
|
|