implemented social identities management page + pw editing page. probably need to fix backend
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\EmailConfirmation;
|
||||
use App\Models\User;
|
||||
use Hash;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Validation\Rule;
|
||||
use MightyPork\Utils\Str;
|
||||
|
||||
class ProfileController extends Controller
|
||||
{
|
||||
/**
|
||||
* Show the application dashboard.
|
||||
*
|
||||
* @return \Illuminate\View\View
|
||||
*/
|
||||
public function view(User $user)
|
||||
{
|
||||
$tables = $user->tables()
|
||||
->with('revision:id,row_count')
|
||||
->paginate(10);
|
||||
|
||||
return view('profile.view')->with(compact('tables', 'user'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit own profile
|
||||
*
|
||||
* @param User $user
|
||||
* @return \Illuminate\View\View
|
||||
*/
|
||||
public function edit()
|
||||
{
|
||||
return view('profile.edit')->with('user', \user());
|
||||
}
|
||||
|
||||
/**
|
||||
* Store changed profile
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
$input = $this->validate($request, [
|
||||
'name' => [
|
||||
'required',
|
||||
VALI_NAME,
|
||||
Rule::unique('users')->ignoreModel(\user()),
|
||||
],
|
||||
'email' => [
|
||||
'required',
|
||||
VALI_EMAIL,
|
||||
Rule::unique('users')->ignoreModel(\user()),
|
||||
],
|
||||
'bio' => ['nullable', VALI_TEXT],
|
||||
'title' => ['required', VALI_LINE],
|
||||
'website' => ['required', VALI_LINE],
|
||||
'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 manageOauth()
|
||||
{
|
||||
return view('profile.logins', ['user' => user()]);
|
||||
}
|
||||
|
||||
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'));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user