fix : 모델 경로 수정

This commit is contained in:
2025-07-29 13:00:25 +09:00
parent d5e94bc698
commit 1942f51cf7
55 changed files with 199 additions and 344 deletions

View File

@@ -1,39 +0,0 @@
<?php
namespace App\Actions\Fortify;
use App\Models\User;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Laravel\Fortify\Contracts\CreatesNewUsers;
use Laravel\Jetstream\Jetstream;
class CreateNewUser implements CreatesNewUsers
{
use PasswordValidationRules;
/**
* Validate and create a newly registered user.
*
* @param array<string, string> $input
*/
public function create(array $input): User
{
Validator::make($input, [
'USER_ID' => ['required', 'string', 'max:30', 'unique:SITE_USER_INFO,USER_ID'],
'USER_PWD' => ['required', 'string', 'min:8'],
'USER_EMAIL' => ['nullable', 'string', 'email', 'max:40'],
'USER_NCNM' => ['nullable', 'string', 'max:50'],
])->validate();
return User::create([
'USER_ID' => $input['USER_ID'],
'USER_PWD' => Hash::make($input['USER_PWD']), // 비밀번호 암호화 저장
'USER_NCNM' => $input['USER_NCNM'] ?? null,
'USER_EMAIL' => $input['USER_EMAIL'] ?? null,
'USER_HP' => $input['USER_HP'] ?? null,
'USER_STATUS' => '01', // 기본적으로 활성화 상태
'REG_DTTM' => now(), // 등록 날짜 자동 설정
]);
}
}

View File

@@ -1,18 +0,0 @@
<?php
namespace App\Actions\Fortify;
use Illuminate\Validation\Rules\Password;
trait PasswordValidationRules
{
/**
* Get the validation rules used to validate passwords.
*
* @return array<int, \Illuminate\Contracts\Validation\Rule|array<mixed>|string>
*/
protected function passwordRules(): array
{
return ['required', 'string', Password::default(), 'confirmed'];
}
}

View File

@@ -1,29 +0,0 @@
<?php
namespace App\Actions\Fortify;
use App\Models\User;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Laravel\Fortify\Contracts\ResetsUserPasswords;
class ResetUserPassword implements ResetsUserPasswords
{
use PasswordValidationRules;
/**
* Validate and reset the user's forgotten password.
*
* @param array<string, string> $input
*/
public function reset(User $user, array $input): void
{
Validator::make($input, [
'password' => $this->passwordRules(),
])->validate();
$user->forceFill([
'password' => Hash::make($input['password']),
])->save();
}
}

View File

@@ -1,32 +0,0 @@
<?php
namespace App\Actions\Fortify;
use App\Models\User;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Laravel\Fortify\Contracts\UpdatesUserPasswords;
class UpdateUserPassword implements UpdatesUserPasswords
{
use PasswordValidationRules;
/**
* Validate and update the user's password.
*
* @param array<string, string> $input
*/
public function update(User $user, array $input): void
{
Validator::make($input, [
'current_password' => ['required', 'string', 'current_password:web'],
'password' => $this->passwordRules(),
], [
'current_password.current_password' => __('The provided password does not match your current password.'),
])->validateWithBag('updatePassword');
$user->forceFill([
'password' => Hash::make($input['password']),
])->save();
}
}

View File

@@ -1,56 +0,0 @@
<?php
namespace App\Actions\Fortify;
use App\Models\User;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule;
use Laravel\Fortify\Contracts\UpdatesUserProfileInformation;
class UpdateUserProfileInformation implements UpdatesUserProfileInformation
{
/**
* Validate and update the given user's profile information.
*
* @param array<string, mixed> $input
*/
public function update(User $user, array $input): void
{
Validator::make($input, [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'email', 'max:255', Rule::unique('users')->ignore($user->id)],
'photo' => ['nullable', 'mimes:jpg,jpeg,png', 'max:1024'],
])->validateWithBag('updateProfileInformation');
if (isset($input['photo'])) {
$user->updateProfilePhoto($input['photo']);
}
if ($input['email'] !== $user->email &&
$user instanceof MustVerifyEmail) {
$this->updateVerifiedUser($user, $input);
} else {
$user->forceFill([
'name' => $input['name'],
'email' => $input['email'],
])->save();
}
}
/**
* Update the given verified user's profile information.
*
* @param array<string, string> $input
*/
protected function updateVerifiedUser(User $user, array $input): void
{
$user->forceFill([
'name' => $input['name'],
'email' => $input['email'],
'email_verified_at' => null,
])->save();
$user->sendEmailVerificationNotification();
}
}

View File

@@ -1,19 +0,0 @@
<?php
namespace App\Actions\Jetstream;
use App\Models\User;
use Laravel\Jetstream\Contracts\DeletesUsers;
class DeleteUser implements DeletesUsers
{
/**
* Delete the given user.
*/
public function delete(User $user): void
{
$user->deleteProfilePhoto();
$user->tokens->each->delete();
$user->delete();
}
}

View File

@@ -2,12 +2,11 @@
namespace App\Http\Controllers\Api\V1;
use App\Models\User;
use App\Http\Controllers\Controller;
use App\Models\Members\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;
use App\Http\Controllers\Controller;
class ApiController extends Controller

View File

@@ -2,11 +2,11 @@
namespace App\Http\Middleware;
use App\Models\Members\User;
use Closure;
use Illuminate\Auth\AuthenticationException;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Models\User;
use Illuminate\Support\Facades\Log;
use Laravel\Sanctum\PersonalAccessToken;

View File

@@ -2,9 +2,9 @@
namespace App\Http\Responses;
use Laravel\Fortify\Contracts\LoginResponse as LoginResponseContract;
use App\Models\Members\User;
use Illuminate\Support\Facades\Session;
use App\Models\User;
use Laravel\Fortify\Contracts\LoginResponse as LoginResponseContract;
class CustomLoginResponse implements LoginResponseContract
{

View File

@@ -1,15 +0,0 @@
<?php
namespace App\Models\Boards;
use Illuminate\Database\Eloquent\Model;
class BoardFile extends Model
{
protected $table = 'board_files';
protected $fillable = ['post_id', 'file_path', 'file_name', 'file_size', 'file_type'];
public function post() {
return $this->belongsTo(Post::class, 'post_id');
}
}

View File

@@ -15,11 +15,8 @@ class Post extends Model
'ip_address', 'is_notice', 'is_secret', 'views', 'status'
];
public function customFieldValues() {
return $this->hasMany(PostCustomFieldValue::class, 'post_id');
}
public function files() {
return $this->hasMany(BoardFile::class, 'post_id');
return $this->morphMany(File::class, 'fileable');
}
public function comments() {
return $this->hasMany(BoardComment::class, 'post_id')->whereNull('parent_id')->where('status', 'active');

View File

@@ -0,0 +1,43 @@
<?php
namespace App\Models\Commons;
use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Category extends Model
{
use SoftDeletes, BelongsToTenant;
protected $table = 'common_codes';
protected $fillable = [
'tenant_id',
'code_group',
'code',
'name',
'parent_id',
'attributes',
'description',
'is_active',
'sort_order'
];
protected $casts = [
'attributes' => 'array',
'is_active' => 'boolean',
];
// 관계: 상위 코드
public function parent()
{
return $this->belongsTo(self::class, 'parent_id');
}
// 관계: 하위 코드들
public function children()
{
return $this->hasMany(self::class, 'parent_id');
}
}

View File

@@ -0,0 +1,43 @@
<?php
namespace App\Models\Commons;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class File extends Model
{
use SoftDeletes;
protected $table = 'files';
protected $fillable = [
'tenant_id',
'file_path',
'original_name',
'file_name',
'file_name_old',
'file_size',
'mime_type',
'description',
'fileable_id',
'fileable_type',
'uploaded_by',
];
/**
* 연관된 모델 (Polymorphic)
*/
public function fileable()
{
return $this->morphTo();
}
/**
* 업로더 (User 등)
*/
public function uploader()
{
return $this->belongsTo(User::class, 'uploaded_by');
}
}

View File

@@ -1,6 +1,6 @@
<?php
namespace App\Models;
namespace App\Models\Commons;
use Illuminate\Database\Eloquent\Model;

View File

@@ -1,7 +1,9 @@
<?php
namespace App\Models;
namespace App\Models\Commons;
use App\Models\Members\UserRole;
use App\Models\Tenants\Tenant;
use Illuminate\Database\Eloquent\Model;
class Role extends Model

View File

@@ -1,6 +1,6 @@
<?php
namespace App\Models;
namespace App\Models\Commons;
use Illuminate\Database\Eloquent\Model;

View File

@@ -0,0 +1,24 @@
<?php
namespace App\Models\Estimates;
use App\Enums\EstimateStatus;
use Illuminate\Database\Eloquent\Model;
class MainRequestEstimate extends Model
{
protected $table = 'main_request_estimates';
protected $casts = [
'status_code' => EstimateStatus::class,
];
protected $fillable = [
'main_request_id',
'estimate_no',
// ... 기타 필드
'status_code',
];
// 관계 메서드 등 추가
}

View File

@@ -1,7 +1,9 @@
<?php
namespace App\Models;
namespace App\Models\Materials;
use App\Models\File;
use App\Models\Qualitys\Lot;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
@@ -32,4 +34,9 @@ public function lots()
{
return $this->hasMany(Lot::class, 'material_id');
}
public function files()
{
return $this->morphMany(File::class, 'fileable');
}
}

View File

@@ -1,6 +1,6 @@
<?php
namespace App\Models;
namespace App\Models\Materials;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

View File

@@ -1,6 +1,6 @@
<?php
namespace App\Models;
namespace App\Models\Materials;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

View File

@@ -1,6 +1,6 @@
<?php
namespace App\Models;
namespace App\Models\Materials;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

View File

@@ -1,50 +0,0 @@
<?php
namespace App\Models;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Fortify\TwoFactorAuthenticatable;
use Laravel\Sanctum\HasApiTokens;
class Member extends Authenticatable
{
use HasApiTokens, Notifiable, TwoFactorAuthenticatable;
protected $primaryKey = 'mb_num'; // 기본 키 변경
protected $fillable = [
'mb_id', 'mb_pass', 'mb_name', 'mb_phone', 'mb_mail',
'email_verified_at', 'mb_type', 'mb_level', 'last_login',
'reg_date', 'remember_token'
];
protected $hidden = [
'mb_pass', 'remember_token',
];
protected $casts = [
'reg_date' => 'datetime',
];
public function getAuthPassword()
{
return $this->mb_pass; // 기본 비밀번호 필드를 mb_pass로 설정
}
public function getAuthIdentifierName()
{
return 'mb_id'; // 기본 로그인 필드를 mb_id로 변경
}
public function company()
{
return $this->belongsTo(MemberCompany::class, 'tn_num', 'mc_num');
// members.tn_num = member_company.mc_num
}
public function tenant()
{
return $this->belongsTo(Tenant::class, 'tn_num');
}
}

View File

@@ -1,17 +0,0 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class MemberCompany extends Model
{
protected $table = 'member_company';
protected $primaryKey = 'mc_num'; // 기본 키 변경
public function members()
{
return $this->hasMany(Member::class, 'tn_num', 'mc_num');
// member_company.mc_num = members.tn_num
}
}

View File

@@ -1,12 +1,14 @@
<?php
namespace App\Models;
namespace App\Models\Members;
use App\Models\Commons\Role;
use App\Models\File;
use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
use App\Traits\ModelTrait;
class User extends Authenticatable
{
@@ -43,4 +45,9 @@ public function userTenantById($tenantId)
{
return $this->hasOne(UserTenant::class)->where('tenant_id', $tenantId);
}
public function files()
{
return $this->morphMany(File::class, 'fileable');
}
}

View File

@@ -1,7 +1,8 @@
<?php
namespace App\Models;
namespace App\Models\Members;
use App\Models\Commons\Menu;
use Illuminate\Database\Eloquent\Model;
class UserMenuPermission extends Model

View File

@@ -1,10 +1,12 @@
<?php
namespace App\Models;
namespace App\Models\Members;
use App\Models\Commons\Role;
use App\Models\Tenants\Tenant;
use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use App\Traits\BelongsToTenant;
class UserRole extends Model
{

View File

@@ -1,11 +1,12 @@
<?php
namespace App\Models;
namespace App\Models\Members;
use App\Models\Tenants\Tenant;
use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use App\Traits\ModelTrait;
use App\Traits\BelongsToTenant;
class UserTenant extends Model
{

View File

@@ -2,6 +2,7 @@
namespace App\Models\Products;
use App\Models\Commons\File;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

View File

@@ -1,12 +0,0 @@
<?php
namespace App\Models\Products;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class File extends Model
{
use SoftDeletes;
protected $fillable = ['tenant_id','file_path','file_name','file_size','mime_type','description'];
}

View File

@@ -16,4 +16,9 @@ public function category() {
public function boms() {
return $this->hasMany(Bom::class);
}
public function files()
{
return $this->morphMany(File::class, 'fileable');
}
}

View File

@@ -1,7 +1,8 @@
<?php
namespace App\Models;
namespace App\Models\Qualitys;
use App\Models\Materials\Material;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

View File

@@ -1,7 +1,7 @@
<?php
namespace App\Models;
namespace App\Models\Qualitys;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

View File

@@ -1,6 +1,6 @@
<?php
namespace App\Models;
namespace App\Models\Tenants;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

View File

@@ -1,6 +1,6 @@
<?php
namespace App\Models;
namespace App\Models\Tenants;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

View File

@@ -1,6 +1,6 @@
<?php
namespace App\Models;
namespace App\Models\Tenants;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

View File

@@ -1,10 +1,15 @@
<?php
namespace App\Models;
namespace App\Models\Tenants;
use App\Models\Commons\Role;
use App\Models\File;
use App\Models\Members\User;
use App\Models\Members\UserRole;
use App\Models\Members\UserTenant;
use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use App\Traits\ModelTrait;
class Tenant extends Model
{
@@ -63,4 +68,9 @@ public function userRoles()
{
return $this->hasMany(UserRole::class);
}
public function files()
{
return $this->morphMany(File::class, 'fileable');
}
}

View File

@@ -1,10 +1,10 @@
<?php
namespace App\Repositories;
use App\Models\Estimates\MainRequestEstimate;
use App\Models\MainRequest;
use App\Models\MainRequestEstimate;
use App\Models\MainRequestOrder;
use App\Models\MainRequestFlow;
use App\Models\MainRequestOrder;
class MainRequestRepository
{

View File

@@ -2,9 +2,9 @@
namespace App\Services;
use Illuminate\Support\Facades\DB;
use App\Models\User;
use App\Models\Members\User;
use App\Models\SiteAdmin;
use Illuminate\Support\Facades\DB;
class AdminPermissionService
{

View File

@@ -2,8 +2,8 @@
namespace App\Services;
use App\Enums\EstimateStatus;
use App\Models\Estimates\MainRequestEstimate;
use App\Repositories\MainRequestRepository;
use App\Models\MainRequestEstimate;
class EstimateService
{

View File

@@ -3,10 +3,8 @@
namespace App\Services;
use App\Helpers\ApiResponse;
use App\Models\User;
use App\Models\Members\User;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
use Illuminate\Auth\AuthenticationException;
class MemberService
{

View File

@@ -62,7 +62,7 @@
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => env('AUTH_MODEL', App\Models\User::class),
'model' => env('AUTH_MODEL', \App\Models\Members\User::class),
],
// 'users' => [

View File

@@ -2,15 +2,15 @@
namespace Database\Factories;
use App\Models\Members\User;
use App\Models\Team;
use App\Models\User;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;
use Laravel\Jetstream\Features;
/**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\User>
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Members\User>
*/
class UserFactory extends Factory
{

View File

@@ -2,10 +2,11 @@
namespace Database\Seeders;
use App\Models\User;
// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use App\Models\Members\User;
use Illuminate\Database\Seeder;
// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
class DatabaseSeeder extends Seeder
{
/**

View File

@@ -2,7 +2,7 @@
namespace Tests\Feature;
use App\Models\User;
use App\Models\Members\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Str;
use Laravel\Jetstream\Features;

View File

@@ -2,7 +2,7 @@
namespace Tests\Feature;
use App\Models\User;
use App\Models\Members\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;

View File

@@ -2,7 +2,7 @@
namespace Tests\Feature;
use App\Models\User;
use App\Models\Members\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Laravel\Jetstream\Http\Livewire\LogoutOtherBrowserSessionsForm;
use Livewire\Livewire;

View File

@@ -2,7 +2,7 @@
namespace Tests\Feature;
use App\Models\User;
use App\Models\Members\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Laravel\Jetstream\Features;
use Laravel\Jetstream\Http\Livewire\ApiTokenManager;

View File

@@ -2,7 +2,7 @@
namespace Tests\Feature;
use App\Models\User;
use App\Models\Members\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Laravel\Jetstream\Features;
use Laravel\Jetstream\Http\Livewire\DeleteUserForm;

View File

@@ -2,7 +2,7 @@
namespace Tests\Feature;
use App\Models\User;
use App\Models\Members\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Str;
use Laravel\Jetstream\Features;

View File

@@ -2,7 +2,7 @@
namespace Tests\Feature;
use App\Models\User;
use App\Models\Members\User;
use Illuminate\Auth\Events\Verified;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Facades\Event;

View File

@@ -2,7 +2,7 @@
namespace Tests\Feature;
use App\Models\User;
use App\Models\Members\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;

View File

@@ -2,7 +2,7 @@
namespace Tests\Feature;
use App\Models\User;
use App\Models\Members\User;
use Illuminate\Auth\Notifications\ResetPassword;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Facades\Notification;

View File

@@ -2,7 +2,7 @@
namespace Tests\Feature;
use App\Models\User;
use App\Models\Members\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Laravel\Jetstream\Http\Livewire\UpdateProfileInformationForm;
use Livewire\Livewire;

View File

@@ -2,7 +2,7 @@
namespace Tests\Feature;
use App\Models\User;
use App\Models\Members\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Laravel\Fortify\Features;
use Laravel\Jetstream\Http\Livewire\TwoFactorAuthenticationForm;

View File

@@ -2,7 +2,7 @@
namespace Tests\Feature;
use App\Models\User;
use App\Models\Members\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Facades\Hash;
use Laravel\Jetstream\Http\Livewire\UpdatePasswordForm;