HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: /home/xedaptot/be.naniguide.com/app/Http/Controllers/SignatureController.php
<?php

namespace Acelle\Http\Controllers;

use Illuminate\Http\Request;
use Acelle\Http\Controllers\Controller;
use Acelle\Model\Signature;
use Acelle\Library\Facades\Hook;
use Acelle\Model\SendingDomain;
use Acelle\Library\ExtendedSwiftMessage;
use Acelle\Library\StringHelper;

use function Acelle\Helpers\dkim_sign_with_default_domain;

class SignatureController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        if (!$request->user()->customer->can('list', Signature::class)) {
            return $this->notAuthorized();
        }

        $signatures = $request->user()->customer->signatures()
            ->search($request->keyword);

        return view('signatures.index', [
            'signatures' => $signatures,
        ]);
    }

    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function list(Request $request)
    {
        if (!$request->user()->customer->can('list', Signature::class)) {
            return $this->notAuthorized();
        }

        $signatures = $request->user()->customer->signatures()->search($request->keyword)
            ->orderBy($request->sort_order, $request->sort_direction ? $request->sort_direction : 'asc')
            ->paginate($request->per_page);

        return view('signatures.list', [
            'signatures' => $signatures,
        ]);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create(Request $request)
    {
        // authorize
        if (!$request->user()->customer->can('create', Signature::class)) {
            return $this->notAuthorized();
        }

        //
        $signature = $request->user()->customer->local()->newSignature();

        return view('signatures.create', [
            'signature' => $signature,
        ]);
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param \Illuminate\Http\Request $request
     *
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        // authorize
        if (!$request->user()->customer->can('create', Signature::class)) {
            return $this->notAuthorized();
        }

        //
        $signature = $request->user()->customer->local()->newSignature();

        // try to save
        list($result, $errors) = $signature->saveSignature(
            $name = $request->name,
            $content = $request->content,
            $is_default = $request->is_default,
        );

        // redirect if fails
        if (!$result) {
            return response()->view('signatures.create', [
                'signature' => $signature,
                'errors' => $errors,
            ], 400);
        }

        return redirect()->action('SignatureController@index')
            ->with('alert-success', trans('messages.signature.added.success', [
                'name' => $signature->name,
            ]));
    }

    /**
     * Display the specified resource.
     *
     * @param int $id
     *
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param int $id
     *
     * @return \Illuminate\Http\Response
     */
    public function edit(Request $request, $id)
    {
        // authorize
        if (!$request->user()->customer->can('create', Signature::class)) {
            return $this->notAuthorized();
        }

        //
        $signature = Signature::findByUid($id);

        return view('signatures.edit', [
            'signature' => $signature,
        ]);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param \Illuminate\Http\Request $request
     * @param int                      $id
     *
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        // authorize
        if (!$request->user()->customer->can('create', Signature::class)) {
            return $this->notAuthorized();
        }

        //
        $signature = Signature::findByUid($id);

        // try to save
        list($result, $errors) = $signature->saveSignature(
            $name = $request->name,
            $content = $request->content,
            $is_default = $request->is_default,
        );

        // redirect if fails
        if (!$result) {
            return response()->view('signatures.edit', [
                'signature' => $signature,
                'errors' => $errors,
            ], 400);
        }

        return redirect()->action('SignatureController@index')
            ->with('alert-success', trans('messages.signature.updated.success', [
                'name' => $signature->name,
            ]));
    }

    /**
     * Custom sort signatures.
     *
     * @param \Illuminate\Http\Request $request
     *
     * @return \Illuminate\Http\Response
     */
    public function sort(Request $request)
    {
        echo trans('messages._deleted_');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param int $id
     *
     * @return \Illuminate\Http\Response
     */
    public function delete(Request $request)
    {
        $signatures = Signature::whereIn(
            'uid',
            is_array($request->uids) ? $request->uids : explode(',', $request->uids)
        );

        foreach ($signatures->get() as $signature) {
            // authorize
            if ($request->user()->customer->can('delete', $signature)) {
                $signature->delete();
            }
        }

        // Redirect to my lists page
        echo trans('messages.signatures.deleted');
    }

    /**
     * Disable sending server.
     *
     * @param int $id
     *
     * @return \Illuminate\Http\Response
     */
    public function disable(Request $request)
    {
        $signatures = Signature::whereIn(
            'uid',
            is_array($request->uids) ? $request->uids : explode(',', $request->uids)
        );

        foreach ($signatures->get() as $signature) {
            // authorize
            if ($request->user()->customer->can('disable', $signature)) {
                $signature->disable();
            }
        }

        // Redirect to my lists page
        echo trans('messages.signatures.disabled');
    }

    /**
     * Disable sending server.
     *
     * @param int $id
     *
     * @return \Illuminate\Http\Response
     */
    public function enable(Request $request)
    {
        $signatures = Signature::whereIn(
            'uid',
            is_array($request->uids) ? $request->uids : explode(',', $request->uids)
        );

        foreach ($signatures->get() as $signature) {
            // authorize
            if ($request->user()->customer->can('enable', $signature)) {
                $signature->enable();
            }
        }

        // Redirect to my lists page
        echo trans('messages.signatures.enabled');
    }

    public function setDefault(Request $request, $id)
    {
        // authorize
        if (!$request->user()->customer->can('create', Signature::class)) {
            return $this->notAuthorized();
        }

        //
        $signature = Signature::findByUid($id);

        //
        $signature->setDefault();

        return response()->json([
            'status' => 'success',
            'message' => trans('messages.signature.set_default.success'),
        ]);
    }

    public function selectBox(Request $request)
    {
        // authorize
        if (!$request->user()->customer->can('list', Signature::class)) {
            return $this->notAuthorized();
        }

        return view('signatures.selectBox', [
            'currentSignature' => $request->current_signature_uid ? Signature::findByUid($request->current_signature_uid) : null,
            'saveUrl' => $request->saveUrl,
        ]);
    }
}