プロフィールの編集機能性

このコミットが含まれているのは:
テクニカル諏訪子 2020-10-04 02:41:59 +09:00
コミット d11bf6c03c
5個のファイルの変更131行の追加4行の削除

ファイルの表示

@ -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');