shell bypass 403

UnknownSec Shell

: /home/bouloter/infix/app/ [ drwxr-xr-x ]

name : User.php
<?php

namespace App;

use Carbon\Carbon;
use App\Models\LmsInstitute;
use App\Traits\UserChatMethods;
use Modules\Forum\Entities\Forum;
use App\Notifications\VerifyEmail;
use Illuminate\Support\Facades\DB;
use Laravel\Passport\HasApiTokens;
use Illuminate\Support\Facades\Log;
use Modules\Org\Entities\OrgBranch;
use Modules\Org\Entities\OrgPosition;
use Modules\Forum\Entities\ForumReply;
use Modules\Payment\Entities\Withdraw;
use Illuminate\Support\Facades\Session;
use Modules\UserType\Entities\UserRole;
use Illuminate\Notifications\Notifiable;
use Modules\Payment\Entities\Subscriber;
use Modules\RolePermission\Entities\Role;
use Modules\Survey\Entities\SurveyAssign;
use Modules\SystemSetting\Entities\Staff;
use Modules\CourseSetting\Entities\Course;
use Modules\Localization\Entities\Language;
use Modules\SystemSetting\Entities\Message;
use Modules\Affiliate\Entities\ReferralUser;
use Modules\SystemSetting\Entities\Currency;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Modules\HumanResource\Entities\ApplyLeave;
use Modules\HumanResource\Entities\Attendance;
use Modules\Payment\Entities\InstructorPayout;
use Modules\HumanResource\Entities\LeaveDefine;
use App\Notifications\PasswordResetNotification;
use Modules\CourseSetting\Entities\CourseReveiw;
use Modules\Quiz\Entities\StudentTakeOnlineQuiz;
use Modules\Affiliate\Entities\AffiliateWithdraw;
use Modules\CourseSetting\Entities\CourseEnrolled;
use Modules\Affiliate\Entities\AffiliateUserWallet;
use Modules\Certificate\Entities\CertificateRecord;
use Modules\OfflinePayment\Entities\OfflinePayment;
use Modules\OrgInstructorPolicy\Entities\OrgPolicy;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Modules\Affiliate\Entities\AffiliateReferralPayment;

//class User extends Authenticatable
class User extends Authenticatable implements MustVerifyEmail
{
    use HasApiTokens, Notifiable, UserChatMethods;

    protected $connection = 'mysql';

    public function __construct(array $attributes = array())
    {
        parent::__construct($attributes);
        if (isModuleActive('LmsSaasMD') && SaasDomain() != "main") {
            $this->setConnection('mysql_md');
        }
    }

    protected $guarded = ['id'];

    protected $hidden = [
        'password', 'remember_token',
    ];


    protected $casts = [
        'email_verified_at' => 'datetime',
    ];

    protected $appends = ['first_name', 'last_name', 'blocked_by_me'];

    public function role()
    {
        return $this->belongsTo(Role::class);
    }

    public function currency()
    {
        return $this->belongsTo(Currency::class)->withDefault();
    }

    public function offlinePayments()
    {
        return $this->hasMany(OfflinePayment::class, 'user_id');
    }

    public function courses()
    {
        return $this->hasMany(Course::class, 'user_id');
    }

    public function subscriptions()
    {
        return $this->hasMany(Subscriber::class, 'user_id', 'id')->whereDate('valid', '>=', Carbon::now());
    }


    public function enrolls()
    {
        return $this->hasManyThrough(CourseEnrolled::class, Course::class);
    }

    public function withdraws()
    {
        return $this->hasMany(Withdraw::class, 'instructor_id');
    }


    public function earnings()
    {
        return $this->hasMany(InstructorPayout::class, 'instructor_id');
    }

    public function forumReply()
    {
        return $this->hasMany(ForumReply::class, 'user_id');
    }

    public function forums()
    {
        return $this->hasMany(Forum::class, 'created_by');
    }

    public function gettotalEarnAttribute()
    {

        return round($this->earnings()->sum('reveune'), 2);
    }

    public function lastMessage()
    {
        $message = Message::where('sender_id', $this->id)->orWhere('reciever_id', $this->id)->orderBy('id', 'desc')->first();
        if ($message) {
            return $message;
        } else {
            return null;
        }
    }

    public function reciever()
    {
        return $this->hasOne(Message::class, 'reciever_id', 'id')->latest();
    }


    public function sender()
    {
        return $this->hasOne(Message::class, 'sender_id')->latest();
    }

    public function getmessageFormatAttribute()
    {
        return Carbon::parse($this->created_at)->diffForHumans();
    }

    public function enrollCourse()
    {
        return $this->belongsToMany(Course::class, 'course_enrolleds', 'user_id', 'course_id');
    }

    public function enCoursesInstance()
    {
        return $this->hasMany(CourseEnrolled::class)->groupBy(['course_id']);
    }

    public function language()
    {
        return $this->belongsTo(Language::class);
    }


    public function recievers()
    {
        return $this->hasMany(Message::class, 'reciever_id')->latest();
    }

    public function senders()
    {
        return $this->hasMany(Message::class, 'sender_id')->latest();
    }

    public function userLanguage()
    {
        return $this->belongsTo(Language::class, 'language_id')->withDefault();
    }

    public function enrollStudents()
    {
        return $this->hasMany(CourseEnrolled::class)->EnrollStudent();
    }

    public function apiKey()
    {
        return $this->zoom_api_key_of_user;
    }

    public function apiSecret()
    {
        return $this->zoom_api_serect_of_user;
    }

    public function submittedExam()
    {
        return $this->hasOne(StudentTakeOnlineQuiz::class, 'student_id')->latest();
    }

    public function userCountry()
    {
        return $this->belongsTo(Country::class, 'country')->withDefault();
    }

    public function totalCourses()
    {
        $totalCourses = Course::where('user_id', '=', $this->id)->count();
        return $totalCourses;
    }

    public function totalEnrolled()
    {
        $totalEnrolled = Course::where('user_id', '=', $this->id)->sum('total_enrolled');
        return $totalEnrolled;
    }


    public function totalRating()
    {

        $totalRatings['rating'] = 0;
        $ReviewList = DB::table('courses')
            ->join('course_reveiws', 'course_reveiws.course_id', 'courses.id')
            ->select('courses.id', 'course_reveiws.id as review_id', 'course_reveiws.star as review_star')
            ->where('courses.user_id', $this->id)
            ->get();
        $totalRatings['total'] = count($ReviewList);

        foreach ($ReviewList as $Review) {
            $totalRatings['rating'] += $Review->review_star;
        }

        if ($totalRatings['total'] != 0) {
            $avg = ($totalRatings['rating'] / $totalRatings['total']);
        } else {
            $avg = 0;
        }

        if ($avg != 0) {
            if ($avg - floor($avg) > 0) {
                $rate = number_format($avg, 1);
            } else {
                $rate = number_format($avg, 0);
            }
            $totalRatings['rating'] = $rate;
        }
        return $totalRatings;
    }

    public function sendEmailVerificationNotification()
    {
        if (!Session::has('reg_email')) {
            try {
                Session::put('reg_email', $this->email);
                $this->notify(new VerifyEmail());

            } catch (\Exception $e) {
                Log::error($e);
            }
        }
    }

    public function sendPasswordResetNotification($token)
    {
        try {
            $this->notify(new PasswordResetNotification($token));
        } catch (\Exception $e) {
            Log::error($e);
        }
    }

    public function stateDetails()
    {
        return $this->belongsTo(State::class, 'state')->withDefault();
    }

    public function cityDetails()
    {
        return $this->belongsTo(City::class, 'city')->withDefault();
    }

    public function stateName()
    {
        return $this->stateDetails->name;
    }

    public function cityName()
    {
        return $this->cityDetails->name;
    }

    public function totalSellCourse()
    {
        return $this->hasManyThrough(CourseEnrolled::class, Course::class, 'user_id', 'course_id', 'id');
    }

    public function totalReview()
    {
        return $this->hasManyThrough(CourseReveiw::class, Course::class, 'user_id', 'course_id', 'id');
    }

    public function routeNotificationForFcm($notification)
    {
        return $this->device_token;
    }

    public function position()
    {
        return $this->belongsTo(OrgPosition::class, 'org_position_code', 'code')->withDefault();
    }

    public function branch()
    {
        return $this->belongsTo(OrgBranch::class, 'org_chart_code', 'code')->withDefault();
    }

    public function policy()
    {
        return $this->belongsTo(OrgPolicy::class, 'policy_id')->withDefault();
    }

    public function totalCertificate()
    {
        return $this->hasMany(CertificateRecord::class, 'student_id')->count();
    }


    public function totalStudentCourses()
    {
        $enrolls = $this->hasMany(CourseEnrolled::class, 'user_id')->with('course')->get();

        $result['complete'] = 0;
        $result['process'] = 0;
        foreach ($enrolls as $enroll) {
            if ($enroll->course->loginUserTotalPercentage >= 100) {
                $result['complete']++;
            } else {
                $result['process']++;
            }

        }
        return $result;
    }

    public function category()
    {
        $courses = $this->courses;

        $category_ids = [];
        $category = [];
        foreach ($courses as $key => $course) {
            if (!array_search($course->category_id, $category_ids)) {
                $category_ids[] = $course->category_id;
                $category[] = $course->category->name;
            }
        }
        if (count($category) != 0) {
            $result = $category[0];
        } else {
            $result = 'N/A';
        }
        return $result;
    }

    public function staff()
    {
        return $this->hasOne(Staff::class);
    }

    public function leaves()
    {
        return $this->hasMany(ApplyLeave::class)->CarryForward();
    }

    public function leaveDefines()
    {
        return $this->hasMany(LeaveDefine::class, 'role_id', 'role_id');

    }

    public function attendances()
    {
        return $this->hasMany(Attendance::class);
    }

    public function attendSurvey($survey)
    {
        $survey->participants->where('user_id',auth()->id())->first();
    }

    public function institute()
    {
        return $this->belongsTo(LmsInstitute::class, 'lms_id', 'id');
    }


    protected static function boot()
    {
        parent::boot();
        self::created(function ($model) {
            if ($model->role_id == 2) {
                saasPlanManagement('instructor', 'create');
            }
            if ($model->role_id == 3) {
                saasPlanManagement('student', 'create');
            }
        });
        self::deleted(function ($model) {
            if ($model->role_id == 2) {
                saasPlanManagement('instructor', 'delete');
            }
            if ($model->role_id == 3) {
                saasPlanManagement('student', 'delete');
            }

        });

    }


//    public function dropboxTokens(): \Illuminate\Database\Eloquent\Relations\HasMany
//    {
//        return $this->hasMany(DropBoxToken::class);
//    }
//
//    public function dropboxToken(): \Illuminate\Database\Eloquent\Relations\HasOne
//    {
//        return $this->hasOne(DropBoxToken::class)->latest();
//    }

    public function googleTokens(): \Illuminate\Database\Eloquent\Relations\HasMany
    {
        return $this->hasMany(GoogleToken::class);
    }

    public function googleToken(): \Illuminate\Database\Eloquent\Relations\HasOne
    {
        return $this->hasOne(GoogleToken::class)->orderBy('id', 'desc');
    }

    public function isReferralUser()
    {
        return $this->hasOne(ReferralUser::class, 'user_id');
    }

    public function affiliateWallet()
    {
        return $this->hasOne(AffiliateUserWallet::class, 'user_id');
    }

    public function affiliateTransaction()
    {
        return $this->hasMany(AffiliateWithdraw::class, 'user_id');
    }

    public function affiliateCommissions()
    {
        return $this->hasMany(AffiliateReferralPayment::class, 'payment_to');
    }

    public function userRoles()
    {
        return $this->belongsToMany(Role::class, 'user_roles', 'user_id', 'role_id');
    }

    public function hasRole($role_id)
    {
        return $this->userRoles()->where('role_id', $role_id)->exists();
    }

    public function educations()
    {
        return $this->hasMany('Modules\Appointment\Entities\InstructorEducation', 'instructor_id', 'id');
    }

    public function schedules()
    {
        return $this->hasMany('Modules\Appointment\Entities\Schedule', 'user_id', 'id')->where('status', 1);
    }

    public function hasOneReview()
    {
        return $this->hasOne('Modules\Appointment\Entities\InstructorReview', 'instructor_id', 'id');
    }

    public function hasOneBooked()
    {
        return $this->hasOne('Modules\Appointment\Entities\Booking', 'user_id', 'id')->where('status', 1);
    }

    public function lastDayBooked()
    {
        return $this->hasMany('Modules\Appointment\Entities\Booking', 'instructor_id', 'id')
            ->where('created_at', '>=', Carbon::now()->subDay())->where('status', 1);
    }

    public function lastDayContact()
    {
        return $this->hasMany('Modules\Appointment\Entities\BookTrailLesson', 'instructor_id', 'id')
            ->where('created_at', '>=', Carbon::now()->subDay(1))->where('status', 1);
    }

    public function avgRating()
    {
        return $this->instructorReviews->avg('star');
    }

    public function instructorReviews()
    {
        return $this->hasMany('Modules\Appointment\Entities\InstructorReview', 'instructor_id', 'id')->latest();
    }

    public function timeSlots()
    {
        return $this->hasMany('Modules\Appointment\Entities\TimeSlot', 'user_id', 'id')->where('status', 1);
    }

    public function certificates()
    {
        return $this->hasMany('Modules\Appointment\Entities\InstructorCertificate', 'instructor_id', 'id');
    }

    public function experiences()
    {
        return $this->hasMany('Modules\Appointment\Entities\InstructorWorkExperience', 'instructor_id', 'id');
    }

    public function teachingCategories()
    {
        return $this->hasMany('Modules\Appointment\Entities\InstructorTeachingCategory', 'instructor_id', 'id');
    }

    public function teachingLanguages()
    {
        return $this->hasMany('Modules\Appointment\Entities\InstructorTeachingLanguage', 'instructor_id', 'id');
    }

    public function socials()
    {
        return $this->hasMany('Modules\Appointment\Entities\InstructorSocial', 'instructor_id', 'id');
    }
    public function cpds()
    {
        return $this->hasMany('Modules\CPD\Entities\AssignStudent', 'student_id', 'id');
    }
    public function classes()
    {
        return $this->hasMany('Modules\MyClass\Entities\ClassCourseAssignStudent', 'student_id', 'id');
    }
    public function totalCourse()
    {
        $class_id = $this->classes->pluck('class_id')->toArray();
        $total_course =  \Modules\MyClass\Entities\ClassCourse::whereIn('class_id', $class_id)->get()->count();
        return $total_course;
    }
    public function bookStudents()
    {
        return $this->hasMany('Modules\Appointment\Entities\Booking', 'instructor_id', 'id')
        ->groupBy('user_id')->where('status', 1);
    }
}

© 2025 UnknownSec
afwwrfwafr45458465
Password