プロフィールの編集機能性
このコミットが含まれているのは:
コミット
d11bf6c03c
|
@ -144,13 +144,55 @@ class UserController extends Controller {
|
|||
return view('pages.site.profile', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user]);
|
||||
}
|
||||
|
||||
public function editProfile ($id) {
|
||||
public function editProfile ($id, Request $r) {
|
||||
$err = '';
|
||||
$suc = '';
|
||||
|
||||
if (isset($r->submit)) {
|
||||
if (!is_null($r->password)) {
|
||||
if ($r->password != $r->password_check) $err = '「パスワード」と「パスワード確認」が異なります。';
|
||||
else {
|
||||
$salt = dechex(mt_rand(0, 2147483647)) . dechex(mt_rand(0, 2147483647));
|
||||
$passwd = hash('sha256', $r->password . $salt);
|
||||
for ($round = 0; $round < 65536; $round++) { $passwd = hash('sha256', $passwd . $salt); }
|
||||
$eduserp = DB::table('users')->where('id', $id)->update(['password' => $passwd, 'salt' => $salt]);
|
||||
if (!$eduserp) $err = 'パスワードの編集失敗。';
|
||||
}
|
||||
}
|
||||
|
||||
$cheml = DB::table('users')->select('email')->where('id', $id)->first();
|
||||
|
||||
if ($err == '') {
|
||||
if ($cheml->email != $r->email) {
|
||||
$exeml = DB::table('users')->select('email')->where('email', $r->email)->count();
|
||||
if ($exeml > 0) $err = '入力したメールアドレスはもう存在しています。';
|
||||
else {
|
||||
$edusere = DB::table('users')->where('id', $id)->update(['email' => $r->email]);
|
||||
if (!$edusere) $err = 'メールアドレスの編集失敗。';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($err == '') {
|
||||
$p = DB::table('usr_profile')->select('display_name', 'country', 'gender')->where('user_id', $id)->first();
|
||||
$edprofile = 1;
|
||||
if ($p->display_name != $r->display_name || $p->country != $r->country || $p->gender != $r->gender) {
|
||||
$edprofile = DB::table('usr_profile')->where('user_id', $id)->update([
|
||||
'display_name' => $r->display_name,
|
||||
'country' => $r->country,
|
||||
'gender' => $r->gender
|
||||
]);
|
||||
}
|
||||
|
||||
if (!$edprofile) $err = '表示名、お国、又は性別の編集失敗。';
|
||||
else $suc = '編集しました!';
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->user) {
|
||||
$res = $this->getUser($id, $this->cook);
|
||||
$cnt = $this->getCountries();
|
||||
return view('pages.site.profileedit', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user, 'err' => $err, 'cnt' => $cnt]);
|
||||
return view('pages.site.profileedit', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user, 'suc' => $suc, 'err' => $err, 'cnt' => $cnt]);
|
||||
}
|
||||
|
||||
return redirect('');
|
||||
|
|
|
@ -139,7 +139,7 @@
|
|||
border-right-color: $grey2;
|
||||
}
|
||||
|
||||
.btn-success, .btn-success.disabled, .btn-success:disabled {
|
||||
.btn-success, .btn-success.disabled, .btn-success:disabled, .alert-success {
|
||||
background: radial-gradient(ellipse at top, $ok2, transparent),
|
||||
radial-gradient(ellipse at bottom, $black1, transparent);
|
||||
color: $white1;
|
||||
|
|
|
@ -63,7 +63,7 @@
|
|||
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="userdown">
|
||||
@if ($user)
|
||||
<a href="/profile/{{ $user->id }}" class="dropdown-item">プロファイルの表示</a>
|
||||
<a href="/profile/{{ $user->id }}" class="dropdown-item">プロファイルの編集</a>
|
||||
<a href="/profile/{{ $user->id }}/edit" class="dropdown-item">プロファイルの編集</a>
|
||||
@if ($user->perm['blg_addpost'] || $user->perm['blg_addpage'] || $user->perm['blg_editpost'] || $user->perm['blg_editpage'] || $user->perm['blg_delpost'] || $user->perm['blg_delpage'])
|
||||
<div class="dropdown-divider"></div>
|
||||
@endif
|
||||
|
|
|
@ -0,0 +1,83 @@
|
|||
@extends('layouts.site')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="within">
|
||||
<div class="bar">プロフィールの編集</div>
|
||||
<div class="back">
|
||||
@if ($err)
|
||||
<div class="alert alert-danger" role="alert">
|
||||
{{ $err }}
|
||||
</div>
|
||||
@elseif ($suc)
|
||||
<div class="alert alert-success" role="alert">
|
||||
{{ $suc }}
|
||||
</div>
|
||||
@endif
|
||||
<form method="POST" action="/profile/{{ $res->id }}/edit">
|
||||
@csrf
|
||||
<div class="row body">
|
||||
<div class="col-sm-4"><b>表示名</b></div>
|
||||
<div class="col">
|
||||
<input name="display_name" id="display_name" type="text" class="form-control" value="{{ $res->profile->display_name }}" />
|
||||
ご入力しない場合は、ユーザー名を表示します。
|
||||
</div>
|
||||
</div>
|
||||
<div class="row body">
|
||||
<div class="col-sm-4"><b>パスワード <span class="badge badge-danger">必須</span></b></div>
|
||||
<div class="col"><input name="password" id="password" type="password" class="form-control" /></div>
|
||||
</div>
|
||||
<div class="row body">
|
||||
<div class="col-sm-4"><b>パスワード確認 <span class="badge badge-danger">必須</span></b></div>
|
||||
<div class="col"><input name="password_check" id="confirm" type="password" class="form-control" /></div>
|
||||
</div>
|
||||
<div class="row body">
|
||||
<div class="col-sm-4"><b>電子メール <span class="badge badge-danger">必須</span></b></div>
|
||||
<div class="col"><input name="email" id="email" type="text" class="form-control" value="{{ $res->email }}" /></div>
|
||||
</div>
|
||||
<div class="row body">
|
||||
<div class="col-sm-4"><b>国</b></div>
|
||||
<div class="col">
|
||||
<select name="country" id="country" class="custom-select">
|
||||
@foreach ($cnt as $r)
|
||||
@if ($res->profile->country == $r['value'])
|
||||
<option value="{{$r['value']}}" selected>{{$r['label']}}</option>
|
||||
@else
|
||||
<option value="{{$r['value']}}">{{$r['label']}}</option>
|
||||
@endif
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row body">
|
||||
<div class="col-sm-4"><b>性別</b></div>
|
||||
<div class="col">
|
||||
<fieldset class="form-group">
|
||||
<div tabindex="-1" role="group">
|
||||
<div id="gender" role="radiogroup" tabindex="-1" class="btn-group-toggle btn-group" variant="primary">
|
||||
<label @if ($res->profile->gender == 0) class="btn btn-fumei-check" @else class="btn btn-fumei" @endif>
|
||||
<input id="gender0" name="gender" type="radio" autocomplete="off" class="" value="0" @if ($res->profile->gender == 0) checked @endif />
|
||||
<span>不明</span>
|
||||
</label>
|
||||
<label @if ($res->profile->gender == 1) class="btn btn-danshi-check" @else class="btn btn-danshi" @endif>
|
||||
<input id="gender1" name="gender" type="radio" autocomplete="off" class="" value="1" @if ($res->profile->gender == 1) checked @endif />
|
||||
<span>男性</span>
|
||||
</label>
|
||||
<label @if ($res->profile->gender == 2) class="btn btn-joshi-check" @else class="btn btn-joshi" @endif>
|
||||
<input id="gender2" name="gender" type="radio" autocomplete="off" class="" value="2" @if ($res->profile->gender == 2) checked @endif />
|
||||
<span>女性</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row body">
|
||||
<div class="col-sm-4"></div>
|
||||
<div class="col"><input name="submit" type="submit" class="btn btn-success btn-block" value="編集" /></div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
|
@ -11,6 +11,8 @@ Route::post('/login', 'UserController@login');
|
|||
Route::get('/register', 'UserController@register');
|
||||
Route::post('/register', 'UserController@register');
|
||||
|
||||
Route::get('/profile/{id}/edit', 'UserController@editProfile');
|
||||
Route::post('/profile/{id}/edit', 'UserController@editProfile');
|
||||
Route::get('/profile/{id}', 'UserController@profile');
|
||||
|
||||
Route::get('/video', 'VideoController@index');
|
||||
|
|
新しいイシューから参照