shell bypass 403
@extends('layouts.contentLayoutMaster')
@section('title', __('locale.menu.Developers'))
@section('vendor-style')
{{-- vendor files --}}
<link rel="stylesheet" href="{{ asset(mix('vendors/css/extensions/sweetalert2.min.css')) }}">
<link rel='stylesheet' href="{{ asset(mix('vendors/css/forms/select/select2.min.css')) }}">
@endsection
@section('content')
<section id="vertical-tabs">
<div class="row">
<div class="col-md-8 col-12">
<div class="card">
<div class="card-header"></div>
<div class="card-content">
<div class="card-body">
<span class="btn btn-primary me-1 mb-1 generate-token"><i data-feather="plus-square"></i> {{ __('locale.developers.regenerate_token') }}</span>
<a href="#" class="btn btn-success me-1 mb-1" data-bs-toggle="modal" data-bs-target="#sendingServer"><i data-feather="server"></i> {{ __('locale.labels.sending_server') }}</a>
<a href="{{ route('customer.developer.docs') }}" class="btn btn-outline-primary mb-1"><i data-feather="book"></i> {{ __('locale.developers.read_the_docs') }}</a>
<hr>
<div class="mt-2 row">
<div class="col-12">
<p class="font-medium-2">{{ __('locale.developers.api_endpoint') }}</p>
<span class="text-primary font-medium-2">{{config('app.url')}}/api/v3/</span>
</div>
</div>
<div class="row mt-2">
<div class="col-12">
<p class="font-medium-2">{{ __('locale.developers.api_token') }}</p>
<span class="font-medium-2 text-primary" id="copy-to-clipboard-input">{{ Auth::user()->api_token }} </span>
<span id="btn-copy" data-bs-toggle="tooltip" data-placement="top" title="{{ __('locale.labels.copy') }}"><i data-feather="clipboard" class="font-large-1 text-info cursor-pointer"></i></span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
@include('customer.Developers._sending_server')
@endsection
@section('vendor-script')
{{-- vendor js files --}}
<script src="{{ asset(mix('vendors/js/extensions/sweetalert2.all.min.js')) }}"></script>
<script src="{{ asset(mix('vendors/js/forms/select/select2.full.min.js')) }}"></script>
<script src="{{ asset(mix('vendors/js/extensions/polyfill.min.js')) }}"></script>
@endsection
@section('page-script')
<script>
let userText = $("#copy-to-clipboard-input");
let btnCopy = $("#btn-copy");
// copy text on click
btnCopy.on("click", function () {
let clipboardText = "";
clipboardText = userText.html();
copyToClipboard(clipboardText);
})
// Basic Select2 select
$(".select2").each(function () {
let $this = $(this);
$this.wrap('<div class="position-relative"></div>');
$this.select2({
// the following code is used to disable x-scrollbar when click in select input and
// take 100% width in responsive also
dropdownAutoWidth: true,
width: '100%',
dropdownParent: $this.parent()
});
});
function copyToClipboard(text) {
let textArea = document.createElement("textarea");
textArea.value = text;
document.body.appendChild(textArea);
textArea.select();
try {
let successful = document.execCommand('copy');
let msg = successful ? 'Copied' : 'Failed to copy';
toastr['success'](msg, '{{__('locale.labels.success')}}!!', {
closeButton: true,
positionClass: 'toast-top-right',
progressBar: true,
newestOnTop: true,
rtl: isRtl
});
} catch (err) {
toastr['info']('Oops, unable to copy ' + err, '{{ __('locale.labels.warning') }}!', {
closeButton: true,
positionClass: 'toast-top-right',
progressBar: true,
newestOnTop: true,
rtl: isRtl
});
}
document.body.removeChild(textArea);
}
$(".generate-token").on("click", function (e) {
e.stopPropagation();
Swal.fire({
title: "{{ __('locale.labels.are_you_sure') }}",
text: "{{ __('locale.labels.able_to_revert') }}",
icon: 'warning',
showCancelButton: true,
confirmButtonText: "{{ __('locale.labels.generate') }}",
customClass: {
confirmButton: 'btn btn-primary',
cancelButton: 'btn btn-outline-danger ms-1'
},
buttonsStyling: false,
}).then(function (result) {
if (result.value) {
$.ajax({
url: "{{ route('customer.developer.generate') }}",
type: "POST",
data: {
_token: "{{csrf_token()}}"
},
success: function (data) {
userText.text(data.token);
toastr['success'](data.message, '{{__('locale.labels.success')}}!!', {
closeButton: true,
positionClass: 'toast-top-right',
progressBar: true,
newestOnTop: true,
rtl: isRtl
});
},
error: function (reject) {
if (reject.status === 422) {
let errors = reject.responseJSON.errors;
$.each(errors, function (key, value) {
toastr['warning'](value[0], "{{__('locale.labels.attention')}}", {
closeButton: true,
positionClass: 'toast-top-right',
progressBar: true,
newestOnTop: true,
rtl: isRtl
});
});
} else {
toastr['warning'](reject.responseJSON.message, "{{__('locale.labels.attention')}}", {
closeButton: true,
positionClass: 'toast-top-right',
progressBar: true,
newestOnTop: true,
rtl: isRtl
});
}
}
})
}
})
});
</script>
@endsection