update migrations

This commit is contained in:
Daeng Deni Mardaeni 2023-09-27 15:06:21 +07:00
parent b153558a25
commit 9daedaedc5
6 changed files with 180 additions and 0 deletions

View File

@ -0,0 +1,29 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration {
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('users', function (Blueprint $table) {
$table->datetime('last_login_at')->nullable();
$table->string('last_login_ip')->nullable();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('users', function (Blueprint $table) {
$table->removeColumn('last_login_at');
$table->removeColumn('last_login_ip');
});
}
};

View File

@ -0,0 +1,34 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration {
/**
* Run the migrations.
*/
public function up()
: void
{
Schema::table('users', function (Blueprint $table) {
$table->foreignId('directorat_id')->nullable();
$table->foreignId('sub_directorat_id')->nullable();
});
}
/**
* Reverse the migrations.
*/
public function down()
: void
{
Schema::withoutForeignKeyConstraints(function () {
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('directorat_id');
$table->dropColumn('sub_directorat_id');
});
});
}
};

View File

@ -0,0 +1,27 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration {
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('users', function (Blueprint $table) {
$table->string('profile_photo_path', 2048)->nullable()->after('email');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('profile_photo_path');
});
}
};

View File

@ -0,0 +1,54 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Auth\Events\Verified;
use Laravel\Socialite\Facades\Socialite;
class SocialiteController extends Controller
{
public function redirect($provider)
{
// redirect from social site
if (request()->input('state')) {
// already logged in
// get user info from social site
$user = Socialite::driver($provider)->stateless()->user();
// check for existing user
$existingUser = User::where('email', $user->getEmail())->first();
if ($existingUser) {
auth()->login($existingUser, true);
return redirect()->to('/');
}
$newUser = $this->createUser($user);
auth()->login($newUser, true);
}
// request login from social site
return Socialite::driver($provider)->redirect();
}
function createUser($user)
{
$user = User::updateOrCreate([
'email' => $user->getEmail(),
], [
'name' => $user->getName(),
'password' => '',
'avatar' => $user->getAvatar(),
]);
if ($user->markEmailAsVerified()) {
event(new Verified($user));
}
return $user;
}
}

View File

@ -0,0 +1,13 @@
@php
$route = explode('.', Route::currentRouteName());
@endphp
<div class="d-flex flex-row flex-center">
<a href="{{ route($route[0].'.'.$route[1].'.edit',['user' => $model->id]) }}"
class="kt_edit_form btn btn-icon btn-bg-light btn-active-light-primary btn-sm me-1">
{!! getIcon("pencil", "fs-1 text-info","duotune") !!}
</a>
{!! Form::open(['method' => 'DELETE','route' => [$route[0].'.'.$route[1].'.destroy', $model->id],'class'=>'']) !!}
{{ Form::button(getIcon("trash", "fs-1 text-danger","duotune"), ['type' => 'submit', 'class' => 'delete btn btn-icon btn-bg-light btn-active-light-danger btn-sm'] ) }}
{!! Form::close() !!}
</div>

View File

@ -0,0 +1,23 @@
<!--begin:: Avatar -->
<div class="symbol symbol-circle symbol-50px overflow-hidden me-3">
<a href="{{ route('user-management.users.show', $model) }}">
@if($model->profile_photo_url)
<div class="symbol-label">
<img src="{{ $model->profile_photo_url }}" class="w-100"/>
</div>
@else
<div class="symbol-label fs-3 {{ app(\App\Actions\GetThemeType::class)->handle('bg-light-? text-?', $model->name) }}">
{{ substr($model->name, 0, 1) }}
</div>
@endif
</a>
</div>
<!--end::Avatar-->
<!--begin::User details-->
<div class="d-flex flex-column">
<a href="{{ route('user-management.users.show', $model) }}" class="text-gray-800 text-hover-primary mb-1">
{{ $model->name }}
</a>
<span>{{ $model->email }}</span>
</div>
<!--begin::User details-->