added member edit admin ui
needed way to edit existing members info if needed, so simple ui was created for admins of the site to change specific info, not including a members avi or password. also consolidated memeber action and ui into it's own controller for the sake of clearer organization
This commit is contained in:
parent
99e22f5697
commit
d0c8def297
9 changed files with 160 additions and 39 deletions
|
@ -34,34 +34,6 @@ class DenController extends Controller
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function profile(Request $request)
|
|
||||||
{
|
|
||||||
$member = Auth::user();
|
|
||||||
$avi = '';
|
|
||||||
if ($member->avatar == 'default-member-avatar') {
|
|
||||||
$avi = '/assets/images/global/default-avi.png';
|
|
||||||
} else {
|
|
||||||
$avi = $member->avatar;
|
|
||||||
}
|
|
||||||
return view('back.profile', [
|
|
||||||
'title' => "Your Profile",
|
|
||||||
'handle' => $member->handle,
|
|
||||||
'email' => $member->email,
|
|
||||||
'avatar' => $avi,
|
|
||||||
'pronouns' => $member->pronoun,
|
|
||||||
'uuid' => $member->uuid,
|
|
||||||
'role' => $member->role
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function member(Request $request)
|
|
||||||
{
|
|
||||||
$member = Auth::user();
|
|
||||||
return view('back.member', [
|
|
||||||
'handle' => $member->handle,
|
|
||||||
'title' => "Manage Members"]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function locations(Request $request)
|
public function locations(Request $request)
|
||||||
{
|
{
|
||||||
$member = Auth::user();
|
$member = Auth::user();
|
||||||
|
|
|
@ -76,7 +76,7 @@ class FrontIndexController extends Controller
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($member->role)) {
|
if (isset($member->role)) {
|
||||||
($member->role == 1 || $member->role == 2) ? $edit = true : $edit = false;
|
($member->role == 0 || $member->role == 1) ? $edit = true : $edit = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$links = explode(',', $location->archive_links);
|
$links = explode(',', $location->archive_links);
|
||||||
|
|
|
@ -3,22 +3,81 @@
|
||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\Auth;
|
||||||
use App\Repositories\MemberRepository;
|
use App\Repositories\MemberRepository;
|
||||||
|
|
||||||
class MemberController extends Controller
|
class MemberController extends Controller
|
||||||
{
|
{
|
||||||
protected $members;
|
protected $member;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
MemberRepository $memberRepo
|
MemberRepository $memberRepo
|
||||||
) {
|
) {
|
||||||
$this->members = $memberRepo;
|
$this->member = $memberRepo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function index(Request $request)
|
||||||
|
{
|
||||||
|
$member = Auth::user();
|
||||||
|
return view('back.member', [
|
||||||
|
'handle' => $member->handle,
|
||||||
|
'members' => $this->member->getAll(),
|
||||||
|
'mode' => 'index',
|
||||||
|
'title' => "Manage Members"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function profile(Request $request)
|
||||||
|
{
|
||||||
|
$member = Auth::user();
|
||||||
|
$avi = '';
|
||||||
|
if ($member->avatar == 'default-member-avatar') {
|
||||||
|
$avi = '/assets/images/global/default-avi.png';
|
||||||
|
} else {
|
||||||
|
$avi = $member->avatar;
|
||||||
|
}
|
||||||
|
return view('back.profile', [
|
||||||
|
'title' => "Hey, it's you!",
|
||||||
|
'handle' => $member->handle,
|
||||||
|
'email' => $member->email,
|
||||||
|
'avatar' => $avi,
|
||||||
|
'pronouns' => $member->pronoun,
|
||||||
|
'uuid' => $member->uuid,
|
||||||
|
'role' => $member->role
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function editMember(Request $request, $uuid = 0)
|
||||||
|
{
|
||||||
|
$member = $this->member->get($uuid);
|
||||||
|
$avi = '';
|
||||||
|
if ($member->avatar == 'default-member-avatar') {
|
||||||
|
$avi = '/assets/images/global/default-avi.png';
|
||||||
|
} else {
|
||||||
|
$avi = $member->avatar;
|
||||||
|
}
|
||||||
|
return view('back.member', [
|
||||||
|
'member' => $member,
|
||||||
|
'avatar' => $avi,
|
||||||
|
'mode' => 'member-edit',
|
||||||
|
'title' => "Edit Member Info"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
//actions
|
||||||
|
public function profileEdit(Request $request)
|
||||||
|
{
|
||||||
|
$token = csrf_token();
|
||||||
|
$response = $this->member->editProfile($request);
|
||||||
|
if ($response['status'] == true) {
|
||||||
|
return back()->with('message', $response['message']);
|
||||||
|
} else {
|
||||||
|
return back()->withErrors([$response['message']]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function memberEdit(Request $request)
|
public function memberEdit(Request $request)
|
||||||
{
|
{
|
||||||
$token = csrf_token();
|
$token = csrf_token();
|
||||||
$response = $this->members->edit($request);
|
$response = $this->member->edit($request);
|
||||||
if ($response['status'] == true) {
|
if ($response['status'] == true) {
|
||||||
return back()->with('message', $response['message']);
|
return back()->with('message', $response['message']);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -14,6 +14,11 @@ class MemberRepository
|
||||||
$this->model = $model;
|
$this->model = $model;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getAll()
|
||||||
|
{
|
||||||
|
return $this->model::all();
|
||||||
|
}
|
||||||
|
|
||||||
public function get($uuid)
|
public function get($uuid)
|
||||||
{
|
{
|
||||||
return $this->model::where("uuid", $uuid)->first();
|
return $this->model::where("uuid", $uuid)->first();
|
||||||
|
@ -24,6 +29,38 @@ class MemberRepository
|
||||||
//get member to edit
|
//get member to edit
|
||||||
$member = $this->get($request->id);
|
$member = $this->get($request->id);
|
||||||
|
|
||||||
|
//save new avi if available
|
||||||
|
$publicPath = '../public/';
|
||||||
|
$refPath = 'assets/images/members/' . $member->uuid;
|
||||||
|
if ($request->hasfile("fresh_avi")) {
|
||||||
|
$file = $request->fresh_avi;
|
||||||
|
if (!is_dir($publicPath . $refPath)) {
|
||||||
|
mkdir($publicPath . $refPath, 0755, true);
|
||||||
|
}
|
||||||
|
$filename = urlencode($file->getClientOriginalName());
|
||||||
|
$file->move($publicPath . $refPath, $filename);
|
||||||
|
$freshAvi = '/' . $refPath . '/' . $filename;
|
||||||
|
$member->avatar = $freshAvi;
|
||||||
|
}
|
||||||
|
|
||||||
|
$member->handle = $request->handle;
|
||||||
|
$member->email = $request->email;
|
||||||
|
$member->pronoun = $request->pronouns;
|
||||||
|
$member->role = $request->role;
|
||||||
|
$member->active = $request->status;
|
||||||
|
|
||||||
|
if ($member->save()) {
|
||||||
|
return ['status' => true, 'message' => "Member Editited"];
|
||||||
|
} else {
|
||||||
|
return ['status' => false, 'message' => "Member Not Editited"];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function editProfile($request)
|
||||||
|
{
|
||||||
|
//get member to edit
|
||||||
|
$member = $this->get($request->id);
|
||||||
|
|
||||||
//save new avi if available
|
//save new avi if available
|
||||||
$publicPath = '../public/';
|
$publicPath = '../public/';
|
||||||
$refPath = 'assets/images/members/' . $member->uuid;
|
$refPath = 'assets/images/members/' . $member->uuid;
|
||||||
|
|
|
@ -46,4 +46,5 @@ select {
|
||||||
appearance: none;
|
appearance: none;
|
||||||
color: var(--primary);
|
color: var(--primary);
|
||||||
background: var(--secondary);
|
background: var(--secondary);
|
||||||
|
height: 35px;
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,23 @@
|
||||||
@section('main-content')
|
@section('main-content')
|
||||||
<section>
|
<section>
|
||||||
<article>
|
<article>
|
||||||
<h2>Member Listing </h2>
|
@switch($mode)
|
||||||
|
@case('member-edit')
|
||||||
|
<h2>Edit Info for {{$member->handle}}</h2>
|
||||||
|
@include('forms.member-edit')
|
||||||
|
<br />
|
||||||
|
@break
|
||||||
|
|
||||||
|
@case('member-create')
|
||||||
|
Second case...
|
||||||
|
@break
|
||||||
|
|
||||||
|
@default
|
||||||
|
<h2>Member Listing </h2>
|
||||||
|
@foreach($members as $member)
|
||||||
|
<a href="/den/member/{{$member->uuid}}">{{$member->handle}}</a><br />
|
||||||
|
@endforeach
|
||||||
|
@endswitch
|
||||||
</article>
|
</article>
|
||||||
</section>
|
</section>
|
||||||
@endsection
|
@endsection
|
|
@ -8,8 +8,8 @@
|
||||||
<article>
|
<article>
|
||||||
<h2>Hey {{$handle}} </h2>
|
<h2>Hey {{$handle}} </h2>
|
||||||
<a href="/den/you">Edit Your Account</a><br />
|
<a href="/den/you">Edit Your Account</a><br />
|
||||||
<a href="/den/locations">Manage Locations</a><br />
|
@if($role==0)
|
||||||
@if($role==1)
|
<a href="/den/locations">Manage Locations</a><br />
|
||||||
<a href="/den/member">Manage Members</a><br />
|
<a href="/den/member">Manage Members</a><br />
|
||||||
@endif
|
@endif
|
||||||
</article>
|
</article>
|
||||||
|
|
34
resources/views/forms/member-edit.blade.php
Normal file
34
resources/views/forms/member-edit.blade.php
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
<form action="/den/member/edit" method="post" enctype="multipart/form-data">
|
||||||
|
<div>
|
||||||
|
<img class="your-avatar" src='{{$avatar}}'>
|
||||||
|
<br />
|
||||||
|
<label>Handle</label><br />
|
||||||
|
<input type="text" name="handle" value="{{$member->handle}}" />
|
||||||
|
<br />
|
||||||
|
<label>Email</label><br />
|
||||||
|
<input type="text" name="email" value="{{$member->email}}" />
|
||||||
|
<br />
|
||||||
|
<label>Pronouns</label><br />
|
||||||
|
<input type="text" name="pronouns" value="{{$member->pronoun}}" />
|
||||||
|
<br />
|
||||||
|
<label>Role</label><br />
|
||||||
|
<input type="text" name="role" value="{{$member->role}}" />
|
||||||
|
<br />
|
||||||
|
<label>Status</label><br />
|
||||||
|
<select name="status">
|
||||||
|
@if($member->active == true)
|
||||||
|
<option value="true" selected>Active</option>
|
||||||
|
<option value="false">Not Active</option>
|
||||||
|
@else
|
||||||
|
<option value="true">Active</option>
|
||||||
|
<option value="false" selected>Not Active</option>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
|
||||||
|
</select>
|
||||||
|
<br />
|
||||||
|
</div>
|
||||||
|
@csrf
|
||||||
|
<input type="hidden" name="id" value="{{$member->uuid}}" />
|
||||||
|
<input type="submit" value="Edit Member" name="submit_button">
|
||||||
|
</form>
|
|
@ -41,8 +41,6 @@ Route::get("/logout", [AuthController::class, 'leave']);
|
||||||
//back
|
//back
|
||||||
Route::group(['prefix' => 'den', 'middleware' => 'member.check'], function () {
|
Route::group(['prefix' => 'den', 'middleware' => 'member.check'], function () {
|
||||||
Route::get("/", [DenController::class, 'start']);
|
Route::get("/", [DenController::class, 'start']);
|
||||||
Route::get("/you", [DenController::class, 'profile']);
|
|
||||||
Route::get("/member", [DenController::class, 'member']);
|
|
||||||
Route::get("/listings/{pageNum}", [DenController::class, 'location']);
|
Route::get("/listings/{pageNum}", [DenController::class, 'location']);
|
||||||
Route::get("/location/edit/{uuid}", [DenController::class, 'locationEdit']);
|
Route::get("/location/edit/{uuid}", [DenController::class, 'locationEdit']);
|
||||||
Route::get("/locations", [DenController::class, 'locations']);
|
Route::get("/locations", [DenController::class, 'locations']);
|
||||||
|
@ -50,6 +48,10 @@ Route::group(['prefix' => 'den', 'middleware' => 'member.check'], function () {
|
||||||
Route::post("/locations/edit", [LocationController::class, 'editLocation']);
|
Route::post("/locations/edit", [LocationController::class, 'editLocation']);
|
||||||
Route::get("/admin/update", [LocationController::class, 'updateLocations']);
|
Route::get("/admin/update", [LocationController::class, 'updateLocations']);
|
||||||
Route::get("/admin/compile", [LocationController::class, 'compileLocations']);
|
Route::get("/admin/compile", [LocationController::class, 'compileLocations']);
|
||||||
//member actions
|
//member stuff
|
||||||
Route::post("/profile/edit", [MemberController::class, 'memberEdit']);
|
Route::get("/you", [MemberController::class, 'profile']);
|
||||||
|
Route::get("/member", [MemberController::class, 'index']);
|
||||||
|
Route::get("/member/{uuid}", [MemberController::class, 'editMember']);
|
||||||
|
Route::post("/profile/edit", [MemberController::class, 'profileEdit']);
|
||||||
|
Route::post("/member/edit", [MemberController::class, 'memberEdit']);
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue