Commit 116df568 authored by 朱招明's avatar 朱招明

鉴权接口

parent 35078fc8
......@@ -4,6 +4,12 @@ APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost
API_STANDARDS_TREE=prs
API_SUBTYPE=smgapi
API_PREFIX=api
API_VERSION=v1
API_DEBUG=true
LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
......@@ -57,3 +63,4 @@ VITE_PUSHER_HOST="${PUSHER_HOST}"
VITE_PUSHER_PORT="${PUSHER_PORT}"
VITE_PUSHER_SCHEME="${PUSHER_SCHEME}"
VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
<?php
return [
'name' => 'Admin'
];
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('admin_users', function (Blueprint $table) {
$table->increments('id');
$table->string('username', 190)->unique();
$table->string('password', 60);
$table->string('name');
$table->string('avatar')->nullable();
$table->string('salt');
$table->timestamps();
});
Schema::create('admin_roles', function (Blueprint $table) {
$table->increments('id');
$table->string('name', 50)->unique();
$table->string('slug', 50)->unique();
$table->timestamps();
});
Schema::create('admin_menus', function (Blueprint $table) {
$table->increments('id');
$table->integer('parent_id')->default(0);
$table->integer('order')->default(0);
$table->string('title', 50);
$table->string('icon', 50)->nullable();
$table->string('uri')->nullable();
$table->timestamps();
});
Schema::create('admin_role_users', function (Blueprint $table) {
$table->integer('role_id');
$table->integer('user_id');
$table->index(['role_id', 'user_id']);
$table->timestamps();
});
Schema::create('admin_role_menus', function (Blueprint $table) {
$table->integer('role_id');
$table->integer('menu_id');
$table->index(['role_id', 'menu_id']);
$table->timestamps();
});
Schema::create('admin_operation_logs', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id');
$table->string('path');
$table->string('method', 10);
$table->string('ip');
$table->text('input');
$table->index('user_id');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('admin_users');
Schema::dropIfExists('admin_roles');
Schema::dropIfExists('admin_menu');
Schema::dropIfExists('admin_role_users');
Schema::dropIfExists('admin_role_menu');
Schema::dropIfExists('admin_operation_log');
}
};
<?php
namespace Modules\Admin\Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
class AdminDatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
DB::transaction(function (){
DB::table("admin_users")->insert([
"id" => "1",
"username" => "admin",
"name" => "admin",
"salt" => "4IpZw+?%MD1c",
"password" => password_hash(md5('1234564IpZw+?%MD1c'), PASSWORD_DEFAULT),
]);
DB::table("admin_roles")->insert([
"id" => "1",
"name" => "超级管理员",
"slug" => "超级管理员",
]);
DB::table("admin_role_users")->insert([
"role_id" => "1",
"user_id" => "1",
]);
});
}
}
<?php
/**
* @desc
* @author [ZZM]
* @since 2023/10/21
* @copyright
*/
namespace Modules\Admin\Entities;
use Illuminate\Database\Eloquent\Model;
class AdminMenu extends Model
{
protected $fillable = [
'title','uri', 'parent_id', 'icon'
];
}
\ No newline at end of file
<?php
/**
* @desc
* @author [ZZM]
* @since 2023/10/21
* @copyright
*/
namespace Modules\Admin\Entities;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasMany;
class AdminRole extends Model
{
protected $fillable = [
'name','slug',
];
public function menu(): BelongsToMany
{
return $this->belongsToMany(AdminMenu::class,'admin_role_menus','role_id','menu_id');
}
}
\ No newline at end of file
<?php
/**
* @desc
* @author [ZZM]
* @since 2023/10/21
* @copyright
*/
namespace Modules\Admin\Entities;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
class AdminRoleMenu extends Model
{
protected $fillable = [
'role_id','menu_id'
];
}
\ No newline at end of file
<?php
/**
* @desc
* @author [ZZM]
* @since 2023/10/21
* @copyright
*/
namespace Modules\Admin\Entities;
use Illuminate\Database\Eloquent\Model;
class AdminRoleUser extends Model
{
protected $fillable = [
'role_id','user_id'
];
}
\ No newline at end of file
<?php
/**
* @desc
* @author [ZZM]
* @since 2023/10/21
* @copyright
*/
namespace Modules\Admin\Entities;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Support\Facades\Auth;
use PHPOpenSourceSaver\JWTAuth\Contracts\JWTSubject;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
class AdminUser extends Authenticatable implements JWTSubject
{
protected $fillable = [
'username','password', 'name', 'avatar', 'salt'
];
/**
* Get the identifier that will be stored in the subject claim of the JWT.
*
* @return mixed
*/
public function getJWTIdentifier()
{
return $this->getKey();
}
/**
* Return a key value array, containing any custom claims to be added to the JWT.
*
* @return array
*/
public function getJWTCustomClaims()
{
return [];
}
public function apiLoginAndGetTokenInfo()
{
$auth = auth('api');
return [
'access_token' => $auth->login($this),
'token_type' => 'Bearer',
'expires_in' => $auth->factory()->getTTL() * 60,
];
}
public function apiRefreshTokenTokenInfo()
{
$auth = auth('api');
return [
'access_token' => $auth->refresh(true,true),
'token_type' => 'Bearer',
'expires_in' => $auth->factory()->getTTL() * 60,
];
}
public function roles(): BelongsToMany
{
return $this->belongsToMany(AdminRole::class,'admin_role_users','user_id','role_id');
}
}
\ No newline at end of file
<?php
declare(strict_types=1);
namespace Modules\Admin\Http\Controllers;
use Exception;
use Dingo\Api\Http\Request;
use Illuminate\Support\Facades\DB;
use Modules\Admin\Entities\AdminMenu;
use Modules\Admin\Entities\AdminUser;
use Modules\Admin\Http\Transformers\AccessTokenTransformer;
use Modules\Admin\Http\Transformers\BaseTransformer;
use Modules\Admin\Http\Utils\Helper;
class AuthController extends BaseController
{
/**
* 登录授权
*
* @param Request $request
*/
public function login(Request $request)
{
$req = $request->all();
$username = $req["username"];
$password = $req["password"];
if ($username == "" || $password == "")
{
throw new \Exception("用户名或密码不能为空");
}
$user = AdminUser::where("username", $username)->first();
if (!$user)
{
throw new \Exception("用户名或密码错误");
}
if (!password_verify(md5($password.$user->salt),$user->password))
{
throw new \Exception("用户名或密码错误");
}
return $this->response->item($user, new AccessTokenTransformer())->setStatusCode(201);
}
/**
* 刷新token
* @desc
* @author [ZZM]
* @since 2023/10/21
* @modify
*/
public function refreshToken(){
return $this->response->item($this->user, new AccessTokenTransformer(true))->setStatusCode(201);
}
/**
* 登出
* @desc
* @author [ZZM]
* @since 2023/10/21
* @modify
*/
public function loginOut(){
auth('api')->logout(true);
return $this->response->noContent()->statusCode('204');
}
/**
* 获取配置
* @desc
*
* @param Request $request
*
* @return \Dingo\Api\Http\Response
* @author [ZZM]
* @since 2023/10/21
* @modify
*/
public function apiConfig(Request $request)
{
$user = $this->user;
#角色
$role = $user->roles()->first();
if($role->id == 1){
#超级管理员默认获取全部菜单
$menu = AdminMenu::get();
}else{
#菜单
$menu = $role->menu;
}
$menu = $menu->toArray();
$menu = Helper::makeTree($menu);
$data = [
"menus" => $menu,
];
return $this->response->array(['data'=>$data]);
}
}
<?php
/**
* @desc
* @author [ZZM]
* @since 2023/10/21
* @copyright
*/
namespace Modules\Admin\Http\Controllers;
use Dingo\Api\Routing\Helpers;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller;
class BaseController extends Controller
{
use Helpers,AuthorizesRequests, DispatchesJobs, ValidatesRequests;
}
\ No newline at end of file
<?php
/**
* @desc
* @author [ZZM]
* @since 2023/10/21
* @copyright
*/
namespace Modules\Admin\Http\Controllers;
use Dingo\Api\Http\Request;
use Modules\Admin\Entities\AdminMenu;
use Modules\Admin\Http\Requests\MenuRequest;
use Modules\Admin\Http\Utils\Helper;
class MenuController extends BaseController
{
public function list(){
$menu = AdminMenu::all()->toArray();
$menu = Helper::makeTree($menu);
return $this->response->array(['data'=>$menu]);
}
public function add(MenuRequest $request){
$params = $request->all(['title','uri','parent_id']);
AdminMenu::create($params);
return $this->response->noContent()->statusCode(201);
}
public function detail(){
}
public function edit(){
}
public function delete(){
}
}
\ No newline at end of file
<?php
/**
* @desc
* @author [ZZM]
* @since 2023/10/21
* @copyright
*/
namespace Modules\Admin\Http\Controllers;
use Dingo\Api\Http\Request;
use Illuminate\Support\Facades\DB;
use Modules\Admin\Entities\AdminMenu;
use Modules\Admin\Entities\AdminRole;
use Modules\Admin\Entities\AdminRoleMenu;
use Modules\Admin\Http\Requests\RoleRequest;
class RoleController extends BaseController
{
public function list(){
}
public function add(RoleRequest $request){
$params = $request->all(['name','slug']);
AdminRole::create($params);
return $this->response->noContent()->statusCode(201);
}
public function detail(){
}
public function edit(){
}
public function delete(){
}
public function setRoleMenu(Request $request,$role_id){
$params = $request->all(['menus']);
if(!is_array($params['menus'])){
abort(422,'格式错误');
}
if($role_id == 1){
abort(500,'超级管理员不可编辑权限');
}
$menus = AdminMenu::all()->toArray();
if($error = $this->checkMenu($menus,$params['menus'])){
abort(500,$error);
}
DB::transaction(function () use ($params,$role_id){
AdminRoleMenu::where('role_id',$role_id)->delete();
$insert = [];
foreach ($params['menus'] as $item){
$insert[] = [
'role_id' => $role_id,
'menu_id' => (int)$item,
];
}
if($insert){
AdminRoleMenu::insert($insert);
}
});
return $this->response->noContent()->statusCode(204);
}
/**
* 菜单格式是否正确
* @desc
*
* @param $menus
* @param $input_menu_ids
*
* @return string
* @since 2023/10/21
* @modify
* @author [ZZM]
*/
function checkMenu($menus,$input_menu_ids){
$menu_ids = array_column($menus,'id');
$menu_parent_ids = array_column($menus,'parent_id','id');
foreach ($input_menu_ids as $id){
#不存在的菜单
if(!in_array($id,$menu_ids)){
return '包含不存在的菜单';
}
#选择了子菜单,但是没包含父级菜单
$parent_id = $menu_parent_ids[$id];
if($parent_id > 0 && !in_array($parent_id,$input_menu_ids)){
return '未包含父级菜单';
}
}
return '';
}
}
\ No newline at end of file
<?php
/**
* @desc
* @author [ZZM]
* @since 2023/10/21
* @copyright
*/
namespace Modules\Admin\Http\Controllers;
use Dingo\Api\Http\Request;
use Illuminate\Support\Facades\DB;
use Modules\Admin\Entities\AdminRoleUser;
use Modules\Admin\Entities\AdminUser;
use Modules\Admin\Http\Requests\UserRequest;
use Modules\Admin\Http\Transformers\AdminUserTransformer;
use Modules\Admin\Http\Utils\Helper;
class UserController extends BaseController
{
public function list(){
$list = AdminUser::all();
return $this->response->collection($list,new AdminUserTransformer());
}
public function add(UserRequest $request){
$params = $request->all(['username','password','name','avatar','role_id']);
#默认密码
if(empty($params['password'])){
$params['password'] = '123456';
}
$params['salt'] = Helper::generateRandomString();
$params['password'] = password_hash(md5($params['password'].$params['salt']), PASSWORD_DEFAULT);
$user = DB::transaction(function () use ($params){
$role_id = $params['role_id'];
unset($params['role_id']);
$user = AdminUser::create($params);
AdminRoleUser::create(['role_id'=>$role_id,'user_id'=>$user->id]);
return $user;
});
return $this->response->item($user,new AdminUserTransformer());
}
public function detail(){
}
public function edit(){
}
public function delete(){
}
}
\ No newline at end of file
<?php
namespace Modules\Admin\Http\Requests;
use Dingo\Api\Http\FormRequest;
use Dingo\Api\Http\Request;
class BaseRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
$method = strtolower($this->method()).'Rules';
$rules = $this->$method();
foreach ($rules as &$rule) {
if (is_string($rule) && strpos($rule, 'bail') === false) {
$rule = 'bail|'.$rule;
} elseif (is_array($rule) && !in_array('bail', $rule)) {
array_unshift($rule, 'bail');
}
}
return $rules;
}
protected function postRules()
{
return [];
}
protected function getRules()
{
return [];
}
protected function putRules()
{
return [];
}
protected function deleteRules()
{
return [];
}
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* @return bool
*/
public function isApi()
{
if ($this->container['request'] instanceof Request) {
return true;
}
return false;
}
}
<?php
namespace Modules\Admin\Http\Requests;
class MenuRequest extends BaseRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function postRules()
{
return [
'parent_id' => 'integer|exists:admin_menus',
'title' => 'bail|required',
];
}
public function messages()
{
return [
'title.required' => '菜单名称必须',
'parent_id.exists' => '父菜单不存在',
];
}
}
<?php
namespace Modules\Admin\Http\Requests;
class RoleRequest extends BaseRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function postRules()
{
return [
'name' => 'bail|required',
'slug' => 'bail|required',
];
}
public function messages()
{
return [
'name.required' => '名称必须',
'slug.required' => '描述必须',
];
}
}
<?php
namespace Modules\Admin\Http\Requests;
class UserRequest extends BaseRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function postRules()
{
return [
'username' => 'bail|required|unique:admin_users',
'name' => 'bail|required',
'role_id' => 'bail|required|exists:admin_roles,id',
];
}
public function messages()
{
return [
'username.required' => '用户名不能为空',
'username.unique' => '用户名重复',
'name.required' => '账号名称不能为空',
'role_id.required' => '角色必须',
'role_id.exists' => '角色不存在',
];
}
}
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2018/6/15
* Time: 9:47
*/
namespace Modules\Admin\Http\Transformers;
use Illuminate\Support\Traits\Macroable;
class AccessTokenTransformer extends BaseTransformer
{
use Macroable;
protected $refresh = false;
public function __construct($refresh = false) {
$this->refresh = $refresh;
parent::__construct();
}
protected array $availableIncludes = ['user'];
/**
* @OA\Schema(
* description="Token信息",
* type="object",
* schema="Token",
* @OA\Property(property="access_token", type="string", description="Token"),
* @OA\Property(property="token_type", type="string", description="Token类型"),
* @OA\Property(property="expires_in", type="integer", description="过期时间"),
* @OA\Property(property="user", type="object", description="用户", @OA\Property(property="data", type="object", ref="#/components/schemas/User"))
* )
*/
public function transform($user)
{
if($this->refresh){
return $user->apiRefreshTokenTokenInfo();
}
return $user->apiLoginAndGetTokenInfo();
}
public function includeUser($user)
{
return $this->item($user, new AdminUserTransformer());
}
}
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2018/6/13
* Time: 11:12
*/
namespace Modules\Admin\Http\Transformers;
use Illuminate\Support\Traits\Macroable;
use Modules\Admin\Entities\AdminUser;
use Modules\Admin\Http\Utils\Helper;
class AdminUserTransformer extends BaseTransformer
{
use Macroable;
protected $hideDetail = false;
public function __construct($hideDetail = false)
{
$this->hideDetail = $hideDetail;
parent::__construct();
}
/**
* @OA\Schema(
* description="用户信息",
* type="object",
* schema="User",
* @OA\Property(property="id", type="integer", description="用户ID"),
* @OA\Property(property="name", type="string", description="用户名"),
* @OA\Property(property="email", type="string", description="邮箱"),
* @OA\Property(property="phone", type="string", description="手机号"),
* @OA\Property(property="created_at", type="string", description="注册时间"),
* @OA\Property(property="updated_at", type="string", description="更新时间")
* )
*/
public function transform(AdminUser $user)
{
$return = ['id', 'username', 'avatar', 'name', 'sex', 'created_at', 'updated_at'];
return Helper::mapAttr($user,$return);
}
}
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2018/6/27
* Time: 17:44
*/
namespace Modules\Admin\Http\Transformers;
use League\Fractal\TransformerAbstract;
class BaseTransformer extends TransformerAbstract
{
protected static $extraIncludes = [];
protected static $extraDefaultIncludes = [];
public function __construct()
{
if (!isset(static::$extraIncludes[static::class])) {
static::$extraIncludes[static::class] = [];
}
if (!isset(static::$extraDefaultIncludes[static::class])) {
static::$extraDefaultIncludes[static::class] = [];
}
$this->availableIncludes = array_merge($this->availableIncludes, static::$extraIncludes[static::class]);
$this->defaultIncludes = array_merge($this->defaultIncludes, static::$extraDefaultIncludes[static::class]);
}
public static function addIncludes($name)
{
if (!isset(static::$extraIncludes[static::class])) {
static::$extraIncludes[static::class] = [];
}
$name = (array) $name;
$temp = [];
foreach ($name as $key => $value) {
if (is_string($key) && $value instanceof \Closure) {
static::macro('include'.ucfirst($key), $value);
$value = $key;
}
$temp[] = $value;
}
static::$extraIncludes[static::class] = array_merge(static::$extraIncludes[static::class], $temp);
}
public static function addDefaultIncludes($name)
{
if (!isset(static::$extraDefaultIncludes[static::class])) {
static::$extraDefaultIncludes[static::class] = [];
}
static::$extraDefaultIncludes[static::class] += (array) $name;
}
/**
* 修改返回
*
* @param $arr
*
* @return mixed
*/
public function alter($arr)
{
return $arr;
}
public static function checkExtraInclude($key)
{
static $extra_includes;
if ($extra_includes == null) {
$extra_includes = array_map('trim', explode(',', request('extra_include', '')));
}
return array_search($key, $extra_includes) === false ? false : true;
}
public function single($value, $transformer)
{
return $value ? $this->item($value, $transformer) : null;
}
protected function hasCount($model, $field)
{
return $this->primitive(optional($model->$field)->count??0);
}
}
<?php
declare(strict_types=1);
namespace Modules\Admin\Http\Utils;
use Carbon\Carbon;
class Helper {
static function makeTree(array $elements, $parentId = 0) {
$branch = [];
foreach ($elements as $element) {
if ($element['parent_id'] == $parentId) {
$children = self::makeTree($elements, $element['id']);
if ($children) {
$element['children'] = $children;
}
$branch[] = $element;
}
}
return $branch;
}
/**
* 随机字符串
* @desc
*
* @param int $length
*
* @return string
* @author [ZZM]
* @since 2023/10/21
* @modify
*/
static function generateRandomString($length = 12) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()-_+=<>?';
$charLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charLength - 1)];
}
return $randomString;
}
static function mapAttr($obj, $keys = [])
{
$request = request();
$temp = [];
$fields = $request->get('fields', '');
$fields = $fields == '' ? [] : explode(',', $fields);
$exclude_fields = $request->get('exclude_fields', '');
$exclude_fields = $exclude_fields == '' ? [] : explode(',', $exclude_fields);
foreach ($keys as $index => $key) {
if (!is_numeric($index)) {
if (is_string($key) && \Illuminate\Support\Str::startsWith($key, '_call:')) {
[$class, $method, $arg_str] = explode('@', substr($key, 6).'@@');
$args = explode(',', $arg_str);
array_unshift($args, $obj);
$temp[$index] = (new $class())->$method(...$args);
} else {
$temp[$index] = $key;
}
} else {
if (strpos($key, '.')) {
[$relation, $attr] = explode('.', $key);
$temp[$key] = optional($obj->$relation)->$attr;
} else {
if (!empty($fields) && !in_array($key, $fields)) {
continue;
}
if (in_array($key, $exclude_fields)) {
continue;
}
if (is_string($key) && \Illuminate\Support\Str::endsWith($key, '_full_url')) {
$key2 = substr($key, 0, -9);
$temp[$key] = $obj->$key ?? file_url($obj->$key2);
} else {
$temp[$key] = (is_object($obj->$key) && ($obj->$key instanceof Carbon)) ? $obj->$key->toDateTimeString() : $obj->$key;
}
}
}
}
return $temp;
}
}
<?php
declare(strict_types=1);
namespace Modules\Admin\Http\Utils;
use Illuminate\Support\Facades\Route;
class RouteRegister {
public static function registerApi($api,$route, $controller) {
#列表
$api->get("{$route}/list", "{$controller}@list");
#添加
$api->post("{$route}/add", "{$controller}@add");
#详情
$api->get("{$route}/{id}/show", "{$controller}@detail");
#编辑
$api->put("{$route}/{id}/edit", "{$controller}@edit");
#删除
$api->delete("{$route}/{id}/delete", "{$controller}@delete");
}
}
<?php
namespace Modules\Admin\Providers;
use Illuminate\Support\ServiceProvider;
use Modules\Admin\Http\Service\AuthService;
use Modules\Admin\Http\Utils\AuthInterface;
class AdminServiceProvider extends ServiceProvider
{
/**
* @var string $moduleName
*/
protected $moduleName = 'Admin';
/**
* @var string $moduleNameLower
*/
protected $moduleNameLower = 'admin';
/**
* Boot the application events.
*
* @return void
*/
public function boot()
{
$this->registerTranslations();
$this->registerConfig();
$this->registerViews();
$this->loadMigrationsFrom(module_path($this->moduleName, 'Database/Migrations'));
$this->registerAntOAInterfaces();
}
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
$this->app->register(RouteServiceProvider::class);
}
/**
* Register config.
*
* @return void
*/
protected function registerConfig()
{
$this->publishes([
module_path($this->moduleName, 'Config/config.php') => config_path($this->moduleNameLower . '.php'),
], 'config');
$this->mergeConfigFrom(
module_path($this->moduleName, 'Config/config.php'), $this->moduleNameLower
);
}
/**
* Register views.
*
* @return void
*/
public function registerViews()
{
$viewPath = resource_path('views/modules/' . $this->moduleNameLower);
$sourcePath = module_path($this->moduleName, 'Resources/views');
$this->publishes([
$sourcePath => $viewPath
], ['views', $this->moduleNameLower . '-module-views']);
$this->loadViewsFrom(array_merge($this->getPublishableViewPaths(), [$sourcePath]), $this->moduleNameLower);
}
/**
* Register translations.
*
* @return void
*/
public function registerTranslations()
{
$langPath = resource_path('lang/modules/' . $this->moduleNameLower);
if (is_dir($langPath)) {
$this->loadTranslationsFrom($langPath, $this->moduleNameLower);
$this->loadJsonTranslationsFrom($langPath);
} else {
$this->loadTranslationsFrom(module_path($this->moduleName, 'Resources/lang'), $this->moduleNameLower);
$this->loadJsonTranslationsFrom(module_path($this->moduleName, 'Resources/lang'));
}
}
/**
* Get the services provided by the provider.
*
* @return array
*/
public function provides()
{
return [];
}
private function getPublishableViewPaths(): array
{
$paths = [];
foreach (config('view.paths') as $path) {
if (is_dir($path . '/modules/' . $this->moduleNameLower)) {
$paths[] = $path . '/modules/' . $this->moduleNameLower;
}
}
return $paths;
}
private function registerAntOAInterfaces() {
$this->app->bind(AuthInterface::class,AuthService::class);
}
}
<?php
namespace Modules\Admin\Providers;
use Illuminate\Support\Facades\Route;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
class RouteServiceProvider extends ServiceProvider
{
/**
* The module namespace to assume when generating URLs to actions.
*
* @var string
*/
protected $moduleNamespace = 'Modules\Admin\Http\Controllers';
/**
* Called before routes are registered.
*
* Register any model bindings or pattern based filters.
*
* @return void
*/
public function boot()
{
parent::boot();
}
/**
* Define the routes for the application.
*
* @return void
*/
public function map()
{
$this->mapApiRoutes();
//
$this->mapWebRoutes();
}
/**
* Define the "web" routes for the application.
*
* These routes all receive session state, CSRF protection, etc.
*
* @return void
*/
protected function mapWebRoutes()
{
Route::middleware('web')
->namespace($this->moduleNamespace)
->group(module_path('Admin', '/Routes/web.php'));
}
/**
* Define the "api" routes for the application.
*
* These routes are typically stateless.
*
* @return void
*/
protected function mapApiRoutes()
{
Route::prefix('api')
->middleware('api')
->namespace($this->moduleNamespace)
->group(module_path('Admin', '/Routes/api.php'));
}
}
@extends('admin::layouts.master')
@section('content')
<h1>Hello World</h1>
<p>
This view is loaded from module: {!! config('admin.name') !!}
</p>
@endsection
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Module Admin</title>
{{-- Laravel Vite - CSS File --}}
{{-- {{ module_vite('build-admin', 'Resources/assets/sass/app.scss') }} --}}
</head>
<body>
@yield('content')
{{-- Laravel Vite - JS File --}}
{{-- {{ module_vite('build-admin', 'Resources/assets/js/app.js') }} --}}
</body>
</html>
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/
$api = app('Dingo\Api\Routing\Router');
$api->version('v1', [
'namespace' => 'Modules\Admin\Http\Controllers',
'prefix' => 'api',
], function ($api) {
#登录
$api->post('auth/login', 'AuthController@login');
$api->group(['middleware' => 'api.auth'], function ($api) {
#刷新token
$api->get('auth/refresh', 'AuthController@refreshToken');
#登出
$api->put('auth/login_out', 'AuthController@loginOut');
#配置
$api->get('configs', 'AuthController@apiConfig');
#菜单
\Modules\Admin\Http\Utils\RouteRegister::registerApi($api,'menu','MenuController');
#用户
\Modules\Admin\Http\Utils\RouteRegister::registerApi($api,'user','UserController');
#角色
\Modules\Admin\Http\Utils\RouteRegister::registerApi($api,'role','RoleController');
#角色权限
$api->put('role/{id}/set_menu', 'RoleController@setRoleMenu');
});
});
<?php
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
{
"name": "nwidart/admin",
"description": "",
"authors": [
{
"name": "Nicolas Widart",
"email": "n.widart@gmail.com"
}
],
"extra": {
"laravel": {
"providers": [],
"aliases": {
}
}
},
"autoload": {
"psr-4": {
"Modules\\Admin\\": ""
}
}
}
{
"name": "Admin",
"alias": "admin",
"description": "",
"keywords": [],
"priority": 0,
"providers": [
"Modules\\Admin\\Providers\\AdminServiceProvider"
],
"files": []
}
{
"private": true,
"scripts": {
"dev": "vite",
"build": "vite build"
},
"devDependencies": {
"axios": "^0.21.4",
"dotenv": "^10.0.0",
"dotenv-expand": "^5.1.0",
"laravel-vite-plugin": "^0.6.0",
"lodash": "^4.17.21",
"postcss": "^8.3.7",
"vite": "^3.0.9"
}
}
const dotenvExpand = require('dotenv-expand');
dotenvExpand(require('dotenv').config({ path: '../../.env'/*, debug: true*/}));
import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
export default defineConfig({
build: {
outDir: '../../public/build-admin',
emptyOutDir: true,
manifest: true,
},
plugins: [
laravel({
publicDirectory: '../../public',
buildDirectory: 'build-admin',
input: [
__dirname + '/Resources/assets/sass/app.scss',
__dirname + '/Resources/assets/js/app.js'
],
refresh: true,
}),
],
});
<?php
namespace App\Admin\Controllers;
use Encore\Admin\Controllers\AuthController as BaseAuthController;
class AuthController extends BaseAuthController
{
}
<?php
namespace App\Admin\Controllers;
use Encore\Admin\Controllers\AdminController;
use Encore\Admin\Form;
use Encore\Admin\Grid;
use Encore\Admin\Show;
class ExampleController extends AdminController
{
/**
* Title for current resource.
*
* @var string
*/
protected $title = 'Example controller';
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
$grid = new Grid(new ExampleModel);
$grid->column('id', __('ID'))->sortable();
$grid->column('created_at', __('Created at'));
$grid->column('updated_at', __('Updated at'));
return $grid;
}
/**
* Make a show builder.
*
* @param mixed $id
* @return Show
*/
protected function detail($id)
{
$show = new Show(ExampleModel::findOrFail($id));
$show->field('id', __('ID'));
$show->field('created_at', __('Created at'));
$show->field('updated_at', __('Updated at'));
return $show;
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
$form = new Form(new ExampleModel);
$form->display('id', __('ID'));
$form->display('created_at', __('Created At'));
$form->display('updated_at', __('Updated At'));
return $form;
}
}
<?php
namespace App\Admin\Controllers;
use App\Http\Controllers\Controller;
use Encore\Admin\Controllers\Dashboard;
use Encore\Admin\Layout\Column;
use Encore\Admin\Layout\Content;
use Encore\Admin\Layout\Row;
class HomeController extends Controller
{
public function index(Content $content)
{
return $content
->title('Dashboard')
->description('Description...')
->row(Dashboard::title())
->row(function (Row $row) {
$row->column(4, function (Column $column) {
$column->append(Dashboard::environment());
});
$row->column(4, function (Column $column) {
$column->append(Dashboard::extensions());
});
$row->column(4, function (Column $column) {
$column->append(Dashboard::dependencies());
});
});
}
}
<?php
/**
* Laravel-admin - admin builder based on Laravel.
* @author z-song <https://github.com/z-song>
*
* Bootstraper for Admin.
*
* Here you can remove builtin form field:
* Encore\Admin\Form::forget(['map', 'editor']);
*
* Or extend custom form field:
* Encore\Admin\Form::extend('php', PHPEditor::class);
*
* Or require js and css assets:
* Admin::css('/packages/prettydocs/css/styles.css');
* Admin::js('/packages/prettydocs/js/main.js');
*
*/
Encore\Admin\Form::forget(['map', 'editor']);
<?php
use Illuminate\Routing\Router;
Admin::routes();
Route::group([
'prefix' => config('admin.route.prefix'),
'namespace' => config('admin.route.namespace'),
'middleware' => config('admin.route.middleware'),
'as' => config('admin.route.prefix') . '.',
], function (Router $router) {
$router->get('/', 'HomeController@index')->name('home');
});
......@@ -6,15 +6,20 @@
"license": "MIT",
"require": {
"php": "^8.1",
"api-ecosystem-for-laravel/dingo-api": "^4.1",
"guzzlehttp/guzzle": "^7.2",
"laravel/framework": "^10.10",
"laravel/sanctum": "^3.2",
"laravel/tinker": "^2.8"
"laravel/framework": "10.*",
"laravel/tinker": "^2.8",
"namshi/jose": "^7.2",
"nesbot/carbon": "^2.71",
"nwidart/laravel-modules": "^10.0",
"php-open-source-saver/jwt-auth": "^2.1"
},
"require-dev": {
"fakerphp/faker": "^1.9.1",
"laravel/pint": "^1.0",
"laravel/sail": "^1.18",
"mnabialek/laravel-sql-logger": "^2.2",
"mockery/mockery": "^1.4.4",
"nunomaduro/collision": "^7.0",
"phpunit/phpunit": "^10.1",
......@@ -23,6 +28,7 @@
"autoload": {
"psr-4": {
"App\\": "app/",
"Modules\\": "Modules/",
"Database\\Factories\\": "database/factories/",
"Database\\Seeders\\": "database/seeders/"
}
......
......@@ -4,9 +4,94 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "aa322c53454393ed775cfe4807d54a50",
"content-hash": "befc3d7b06f7f26225cbcbdefe34731f",
"packages": [
{
"name": "api-ecosystem-for-laravel/dingo-api",
"version": "v4.1.1",
"source": {
"type": "git",
"url": "https://github.com/api-ecosystem-for-laravel/dingo-api.git",
"reference": "dfeb976428006b0268f084114ac221b0912c2957"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/api-ecosystem-for-laravel/dingo-api/zipball/dfeb976428006b0268f084114ac221b0912c2957",
"reference": "dfeb976428006b0268f084114ac221b0912c2957",
"shasum": ""
},
"require": {
"dingo/blueprint": "^0.4.5",
"illuminate/routing": "^9.0|^10.0",
"illuminate/support": "^9.0|^10.0",
"league/fractal": "^0.20",
"php": "^8.0"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "~3",
"illuminate/auth": "^9.0|^10.0",
"illuminate/cache": "^9.0|^10.0",
"illuminate/console": "^9.0|^10.0",
"illuminate/database": "^9.0|^10.0",
"illuminate/events": "^9.0|^10.0",
"illuminate/filesystem": "^9.0|^10.0",
"illuminate/log": "^9.0|^10.0",
"illuminate/pagination": "^9.0|^10.0",
"laravel/lumen-framework": "^9.0|^10.0",
"mockery/mockery": "~1.0",
"php-open-source-saver/jwt-auth": "^1.4",
"phpunit/phpunit": "^9.0",
"squizlabs/php_codesniffer": "~2.0"
},
"suggest": {
"php-open-source-saver/jwt-auth": "Protect your API with JSON Web Tokens."
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.0-dev"
},
"laravel": {
"providers": [
"Dingo\\Api\\Provider\\LaravelServiceProvider"
],
"aliases": {
"API": "Dingo\\Api\\Facade\\API"
}
}
},
"autoload": {
"files": [
"src/helpers.php"
],
"psr-4": {
"Dingo\\Api\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Jason Lewis",
"email": "jason.lewis1991@gmail.com"
}
],
"description": "A RESTful API package for the Laravel and Lumen frameworks.",
"keywords": [
"api",
"dingo",
"laravel",
"restful"
],
"support": {
"issues": "https://github.com/api-ecosystem-for-laravel/dingo-api/issues",
"source": "https://github.com/api-ecosystem-for-laravel/dingo-api/tree/v4.1.1"
},
"time": "2023-05-24T10:20:45+00:00"
},
{
"name": "brick/math",
"version": "0.11.0",
"source": {
......@@ -137,6 +222,189 @@
"time": "2022-10-27T11:44:00+00:00"
},
{
"name": "dingo/blueprint",
"version": "v0.4.6",
"source": {
"type": "git",
"url": "https://github.com/dingo/blueprint.git",
"reference": "3ad48857c39309aa24fe888a962f79dd7fafff46"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/dingo/blueprint/zipball/3ad48857c39309aa24fe888a962f79dd7fafff46",
"reference": "3ad48857c39309aa24fe888a962f79dd7fafff46",
"shasum": ""
},
"require": {
"doctrine/annotations": "~1.2 | ^2.0",
"illuminate/filesystem": "^7.0|^8.0|^9.0|^10.0",
"illuminate/support": "^7.0|^8.0|^9.0|^10.0",
"php": "^7.2.5|^8.0",
"phpdocumentor/reflection-docblock": "^3.1 || ^4.1 || ^5"
},
"require-dev": {
"phpunit/phpunit": "^6.5|^8.3|^9.0|^10.0",
"squizlabs/php_codesniffer": "~2.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "0.2-dev"
}
},
"autoload": {
"psr-4": {
"Dingo\\Blueprint\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Jason Lewis",
"email": "jason.lewis1991@gmail.com"
}
],
"description": "API Blueprint documentation generator.",
"keywords": [
"api",
"blueprint",
"dingo",
"docs",
"laravel"
],
"support": {
"issues": "https://github.com/dingo/blueprint/issues",
"source": "https://github.com/dingo/blueprint/tree/v0.4.6"
},
"time": "2023-05-14T11:44:17+00:00"
},
{
"name": "doctrine/annotations",
"version": "2.0.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/annotations.git",
"reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/annotations/zipball/e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f",
"reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f",
"shasum": ""
},
"require": {
"doctrine/lexer": "^2 || ^3",
"ext-tokenizer": "*",
"php": "^7.2 || ^8.0",
"psr/cache": "^1 || ^2 || ^3"
},
"require-dev": {
"doctrine/cache": "^2.0",
"doctrine/coding-standard": "^10",
"phpstan/phpstan": "^1.8.0",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
"symfony/cache": "^5.4 || ^6",
"vimeo/psalm": "^4.10"
},
"suggest": {
"php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations"
},
"type": "library",
"autoload": {
"psr-4": {
"Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
}
],
"description": "Docblock Annotations Parser",
"homepage": "https://www.doctrine-project.org/projects/annotations.html",
"keywords": [
"annotations",
"docblock",
"parser"
],
"support": {
"issues": "https://github.com/doctrine/annotations/issues",
"source": "https://github.com/doctrine/annotations/tree/2.0.1"
},
"time": "2023-02-02T22:02:53+00:00"
},
{
"name": "doctrine/deprecations",
"version": "1.1.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/deprecations.git",
"reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931",
"reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
"require-dev": {
"doctrine/coding-standard": "^9",
"phpstan/phpstan": "1.4.10 || 1.10.15",
"phpstan/phpstan-phpunit": "^1.0",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
"psalm/plugin-phpunit": "0.18.4",
"psr/log": "^1 || ^2 || ^3",
"vimeo/psalm": "4.30.0 || 5.12.0"
},
"suggest": {
"psr/log": "Allows logging deprecations via PSR-3 logger implementation"
},
"type": "library",
"autoload": {
"psr-4": {
"Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.",
"homepage": "https://www.doctrine-project.org/",
"support": {
"issues": "https://github.com/doctrine/deprecations/issues",
"source": "https://github.com/doctrine/deprecations/tree/1.1.2"
},
"time": "2023-09-27T20:04:15+00:00"
},
{
"name": "doctrine/inflector",
"version": "2.0.8",
"source": {
......@@ -1228,72 +1496,6 @@
"time": "2023-10-03T01:07:35+00:00"
},
{
"name": "laravel/sanctum",
"version": "v3.3.1",
"source": {
"type": "git",
"url": "https://github.com/laravel/sanctum.git",
"reference": "338f633e6487e76b255470d3373fbc29228aa971"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/sanctum/zipball/338f633e6487e76b255470d3373fbc29228aa971",
"reference": "338f633e6487e76b255470d3373fbc29228aa971",
"shasum": ""
},
"require": {
"ext-json": "*",
"illuminate/console": "^9.21|^10.0",
"illuminate/contracts": "^9.21|^10.0",
"illuminate/database": "^9.21|^10.0",
"illuminate/support": "^9.21|^10.0",
"php": "^8.0.2"
},
"require-dev": {
"mockery/mockery": "^1.0",
"orchestra/testbench": "^7.28.2|^8.8.3",
"phpstan/phpstan": "^1.10",
"phpunit/phpunit": "^9.6"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.x-dev"
},
"laravel": {
"providers": [
"Laravel\\Sanctum\\SanctumServiceProvider"
]
}
},
"autoload": {
"psr-4": {
"Laravel\\Sanctum\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Taylor Otwell",
"email": "taylor@laravel.com"
}
],
"description": "Laravel Sanctum provides a featherweight authentication system for SPAs and simple APIs.",
"keywords": [
"auth",
"laravel",
"sanctum"
],
"support": {
"issues": "https://github.com/laravel/sanctum/issues",
"source": "https://github.com/laravel/sanctum"
},
"time": "2023-09-07T15:46:33+00:00"
},
{
"name": "laravel/serializable-closure",
"version": "v1.3.1",
"source": {
......@@ -1423,54 +1625,192 @@
"time": "2023-08-15T14:27:00+00:00"
},
{
"name": "league/commonmark",
"version": "2.4.1",
"name": "lcobucci/clock",
"version": "3.1.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/commonmark.git",
"reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5"
"url": "https://github.com/lcobucci/clock.git",
"reference": "30a854ceb22bd87d83a7a4563b3f6312453945fc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/commonmark/zipball/3669d6d5f7a47a93c08ddff335e6d945481a1dd5",
"reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5",
"url": "https://api.github.com/repos/lcobucci/clock/zipball/30a854ceb22bd87d83a7a4563b3f6312453945fc",
"reference": "30a854ceb22bd87d83a7a4563b3f6312453945fc",
"shasum": ""
},
"require": {
"ext-mbstring": "*",
"league/config": "^1.1.1",
"php": "^7.4 || ^8.0",
"psr/event-dispatcher": "^1.0",
"symfony/deprecation-contracts": "^2.1 || ^3.0",
"symfony/polyfill-php80": "^1.16"
"php": "~8.2.0",
"psr/clock": "^1.0"
},
"require-dev": {
"cebe/markdown": "^1.0",
"commonmark/cmark": "0.30.0",
"commonmark/commonmark.js": "0.30.0",
"composer/package-versions-deprecated": "^1.8",
"embed/embed": "^4.4",
"erusev/parsedown": "^1.0",
"ext-json": "*",
"github/gfm": "0.29.0",
"michelf/php-markdown": "^1.4 || ^2.0",
"nyholm/psr7": "^1.5",
"phpstan/phpstan": "^1.8.2",
"phpunit/phpunit": "^9.5.21",
"scrutinizer/ocular": "^1.8.1",
"symfony/finder": "^5.3 | ^6.0",
"symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0",
"unleashedtech/php-coding-standard": "^3.1.1",
"vimeo/psalm": "^4.24.0 || ^5.0.0"
"provide": {
"psr/clock-implementation": "1.0"
},
"suggest": {
"symfony/yaml": "v2.3+ required if using the Front Matter extension"
"require-dev": {
"infection/infection": "^0.26",
"lcobucci/coding-standard": "^10.0.0",
"phpstan/extension-installer": "^1.2",
"phpstan/phpstan": "^1.10.7",
"phpstan/phpstan-deprecation-rules": "^1.1.3",
"phpstan/phpstan-phpunit": "^1.3.10",
"phpstan/phpstan-strict-rules": "^1.5.0",
"phpunit/phpunit": "^10.0.17"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "2.5-dev"
}
"autoload": {
"psr-4": {
"Lcobucci\\Clock\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Luís Cobucci",
"email": "lcobucci@gmail.com"
}
],
"description": "Yet another clock abstraction",
"support": {
"issues": "https://github.com/lcobucci/clock/issues",
"source": "https://github.com/lcobucci/clock/tree/3.1.0"
},
"funding": [
{
"url": "https://github.com/lcobucci",
"type": "github"
},
{
"url": "https://www.patreon.com/lcobucci",
"type": "patreon"
}
],
"time": "2023-03-20T19:12:25+00:00"
},
{
"name": "lcobucci/jwt",
"version": "4.3.0",
"source": {
"type": "git",
"url": "https://github.com/lcobucci/jwt.git",
"reference": "4d7de2fe0d51a96418c0d04004986e410e87f6b4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/lcobucci/jwt/zipball/4d7de2fe0d51a96418c0d04004986e410e87f6b4",
"reference": "4d7de2fe0d51a96418c0d04004986e410e87f6b4",
"shasum": ""
},
"require": {
"ext-hash": "*",
"ext-json": "*",
"ext-mbstring": "*",
"ext-openssl": "*",
"ext-sodium": "*",
"lcobucci/clock": "^2.0 || ^3.0",
"php": "^7.4 || ^8.0"
},
"require-dev": {
"infection/infection": "^0.21",
"lcobucci/coding-standard": "^6.0",
"mikey179/vfsstream": "^1.6.7",
"phpbench/phpbench": "^1.2",
"phpstan/extension-installer": "^1.0",
"phpstan/phpstan": "^1.4",
"phpstan/phpstan-deprecation-rules": "^1.0",
"phpstan/phpstan-phpunit": "^1.0",
"phpstan/phpstan-strict-rules": "^1.0",
"phpunit/php-invoker": "^3.1",
"phpunit/phpunit": "^9.5"
},
"type": "library",
"autoload": {
"psr-4": {
"Lcobucci\\JWT\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Luís Cobucci",
"email": "lcobucci@gmail.com",
"role": "Developer"
}
],
"description": "A simple library to work with JSON Web Token and JSON Web Signature",
"keywords": [
"JWS",
"jwt"
],
"support": {
"issues": "https://github.com/lcobucci/jwt/issues",
"source": "https://github.com/lcobucci/jwt/tree/4.3.0"
},
"funding": [
{
"url": "https://github.com/lcobucci",
"type": "github"
},
{
"url": "https://www.patreon.com/lcobucci",
"type": "patreon"
}
],
"time": "2023-01-02T13:28:00+00:00"
},
{
"name": "league/commonmark",
"version": "2.4.1",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/commonmark.git",
"reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/commonmark/zipball/3669d6d5f7a47a93c08ddff335e6d945481a1dd5",
"reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5",
"shasum": ""
},
"require": {
"ext-mbstring": "*",
"league/config": "^1.1.1",
"php": "^7.4 || ^8.0",
"psr/event-dispatcher": "^1.0",
"symfony/deprecation-contracts": "^2.1 || ^3.0",
"symfony/polyfill-php80": "^1.16"
},
"require-dev": {
"cebe/markdown": "^1.0",
"commonmark/cmark": "0.30.0",
"commonmark/commonmark.js": "0.30.0",
"composer/package-versions-deprecated": "^1.8",
"embed/embed": "^4.4",
"erusev/parsedown": "^1.0",
"ext-json": "*",
"github/gfm": "0.29.0",
"michelf/php-markdown": "^1.4 || ^2.0",
"nyholm/psr7": "^1.5",
"phpstan/phpstan": "^1.8.2",
"phpunit/phpunit": "^9.5.21",
"scrutinizer/ocular": "^1.8.1",
"symfony/finder": "^5.3 | ^6.0",
"symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0",
"unleashedtech/php-coding-standard": "^3.1.1",
"vimeo/psalm": "^4.24.0 || ^5.0.0"
},
"suggest": {
"symfony/yaml": "v2.3+ required if using the Front Matter extension"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "2.5-dev"
}
},
"autoload": {
"psr-4": {
......@@ -1761,6 +2101,76 @@
"time": "2023-08-30T10:23:59+00:00"
},
{
"name": "league/fractal",
"version": "0.20.1",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/fractal.git",
"reference": "8b9d39b67624db9195c06f9c1ffd0355151eaf62"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/fractal/zipball/8b9d39b67624db9195c06f9c1ffd0355151eaf62",
"reference": "8b9d39b67624db9195c06f9c1ffd0355151eaf62",
"shasum": ""
},
"require": {
"php": ">=7.4"
},
"require-dev": {
"doctrine/orm": "^2.5",
"illuminate/contracts": "~5.0",
"mockery/mockery": "^1.3",
"pagerfanta/pagerfanta": "~1.0.0",
"phpstan/phpstan": "^1.4",
"phpunit/phpunit": "^9.5",
"squizlabs/php_codesniffer": "~3.4",
"vimeo/psalm": "^4.22",
"zendframework/zend-paginator": "~2.3"
},
"suggest": {
"illuminate/pagination": "The Illuminate Pagination component.",
"pagerfanta/pagerfanta": "Pagerfanta Paginator",
"zendframework/zend-paginator": "Zend Framework Paginator"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "0.20.x-dev"
}
},
"autoload": {
"psr-4": {
"League\\Fractal\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Phil Sturgeon",
"email": "me@philsturgeon.uk",
"homepage": "http://philsturgeon.uk/",
"role": "Developer"
}
],
"description": "Handle the output of complex data structures ready for API output.",
"homepage": "http://fractal.thephpleague.com/",
"keywords": [
"api",
"json",
"league",
"rest"
],
"support": {
"issues": "https://github.com/thephpleague/fractal/issues",
"source": "https://github.com/thephpleague/fractal/tree/0.20.1"
},
"time": "2022-04-11T12:47:17+00:00"
},
{
"name": "league/mime-type-detection",
"version": "1.14.0",
"source": {
......@@ -1918,6 +2328,73 @@
"time": "2023-06-21T08:46:11+00:00"
},
{
"name": "namshi/jose",
"version": "7.2.3",
"source": {
"type": "git",
"url": "https://github.com/namshi/jose.git",
"reference": "89a24d7eb3040e285dd5925fcad992378b82bcff"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/namshi/jose/zipball/89a24d7eb3040e285dd5925fcad992378b82bcff",
"reference": "89a24d7eb3040e285dd5925fcad992378b82bcff",
"shasum": ""
},
"require": {
"ext-date": "*",
"ext-hash": "*",
"ext-json": "*",
"ext-pcre": "*",
"ext-spl": "*",
"php": ">=5.5",
"symfony/polyfill-php56": "^1.0"
},
"require-dev": {
"phpseclib/phpseclib": "^2.0",
"phpunit/phpunit": "^4.5|^5.0",
"satooshi/php-coveralls": "^1.0"
},
"suggest": {
"ext-openssl": "Allows to use OpenSSL as crypto engine.",
"phpseclib/phpseclib": "Allows to use Phpseclib as crypto engine, use version ^2.0."
},
"type": "library",
"autoload": {
"psr-4": {
"Namshi\\JOSE\\": "src/Namshi/JOSE/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Alessandro Nadalin",
"email": "alessandro.nadalin@gmail.com"
},
{
"name": "Alessandro Cinelli (cirpo)",
"email": "alessandro.cinelli@gmail.com"
}
],
"description": "JSON Object Signing and Encryption library for PHP.",
"keywords": [
"JSON Web Signature",
"JSON Web Token",
"JWS",
"json",
"jwt",
"token"
],
"support": {
"issues": "https://github.com/namshi/jose/issues",
"source": "https://github.com/namshi/jose/tree/master"
},
"time": "2016-12-05T07:27:31+00:00"
},
{
"name": "nesbot/carbon",
"version": "2.71.0",
"source": {
......@@ -2247,31 +2724,396 @@
"symfony/console": "^5.3.0|^6.0.0"
},
"require-dev": {
"ergebnis/phpstan-rules": "^1.0.",
"illuminate/console": "^8.0|^9.0",
"illuminate/support": "^8.0|^9.0",
"laravel/pint": "^1.0.0",
"pestphp/pest": "^1.21.0",
"pestphp/pest-plugin-mock": "^1.0",
"phpstan/phpstan": "^1.4.6",
"phpstan/phpstan-strict-rules": "^1.1.0",
"symfony/var-dumper": "^5.2.7|^6.0.0",
"thecodingmachine/phpstan-strict-rules": "^1.0.0"
"ergebnis/phpstan-rules": "^1.0.",
"illuminate/console": "^8.0|^9.0",
"illuminate/support": "^8.0|^9.0",
"laravel/pint": "^1.0.0",
"pestphp/pest": "^1.21.0",
"pestphp/pest-plugin-mock": "^1.0",
"phpstan/phpstan": "^1.4.6",
"phpstan/phpstan-strict-rules": "^1.1.0",
"symfony/var-dumper": "^5.2.7|^6.0.0",
"thecodingmachine/phpstan-strict-rules": "^1.0.0"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"Termwind\\Laravel\\TermwindServiceProvider"
]
}
},
"autoload": {
"files": [
"src/Functions.php"
],
"psr-4": {
"Termwind\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nuno Maduro",
"email": "enunomaduro@gmail.com"
}
],
"description": "Its like Tailwind CSS, but for the console.",
"keywords": [
"cli",
"console",
"css",
"package",
"php",
"style"
],
"support": {
"issues": "https://github.com/nunomaduro/termwind/issues",
"source": "https://github.com/nunomaduro/termwind/tree/v1.15.1"
},
"funding": [
{
"url": "https://www.paypal.com/paypalme/enunomaduro",
"type": "custom"
},
{
"url": "https://github.com/nunomaduro",
"type": "github"
},
{
"url": "https://github.com/xiCO2k",
"type": "github"
}
],
"time": "2023-02-08T01:06:31+00:00"
},
{
"name": "nwidart/laravel-modules",
"version": "10.0.2",
"source": {
"type": "git",
"url": "https://github.com/nWidart/laravel-modules.git",
"reference": "ef67a7367223ab96539136116d69405d1c21c321"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nWidart/laravel-modules/zipball/ef67a7367223ab96539136116d69405d1c21c321",
"reference": "ef67a7367223ab96539136116d69405d1c21c321",
"shasum": ""
},
"require": {
"ext-json": "*",
"php": ">=8.1"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^3.6",
"laravel/framework": "^10.0",
"mockery/mockery": "^1.5",
"orchestra/testbench": "^8.0",
"phpstan/phpstan": "^1.4",
"phpunit/phpunit": "^10.0",
"spatie/phpunit-snapshot-assertions": "^5.0"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"Nwidart\\Modules\\LaravelModulesServiceProvider"
],
"aliases": {
"Module": "Nwidart\\Modules\\Facades\\Module"
}
},
"branch-alias": {
"dev-master": "10.0-dev"
}
},
"autoload": {
"files": [
"src/helpers.php"
],
"psr-4": {
"Nwidart\\Modules\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Widart",
"email": "n.widart@gmail.com",
"homepage": "https://nicolaswidart.com",
"role": "Developer"
}
],
"description": "Laravel Module management",
"keywords": [
"laravel",
"module",
"modules",
"nwidart",
"rad"
],
"support": {
"issues": "https://github.com/nWidart/laravel-modules/issues",
"source": "https://github.com/nWidart/laravel-modules/tree/10.0.2"
},
"funding": [
{
"url": "https://github.com/nwidart",
"type": "github"
}
],
"time": "2023-10-18T19:14:29+00:00"
},
{
"name": "php-open-source-saver/jwt-auth",
"version": "2.1.0",
"source": {
"type": "git",
"url": "https://github.com/PHP-Open-Source-Saver/jwt-auth.git",
"reference": "5b4e3eec31c8da03d58b64c4e28c469b334bec4c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/PHP-Open-Source-Saver/jwt-auth/zipball/5b4e3eec31c8da03d58b64c4e28c469b334bec4c",
"reference": "5b4e3eec31c8da03d58b64c4e28c469b334bec4c",
"shasum": ""
},
"require": {
"ext-json": "*",
"illuminate/auth": "^6|^7|^8.67|^9|^10",
"illuminate/contracts": "^6|^7|^8.67|^9|^10",
"illuminate/http": "^6|^7|^8.67|^9|^10",
"illuminate/support": "^6|^7|^8.67|^9|^10",
"lcobucci/jwt": "^4.0",
"namshi/jose": "^7.0",
"nesbot/carbon": "^1.0|^2.0",
"php": "^7.4|^8.0"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^3",
"illuminate/console": "^6|^7|^8.67|^9|^10",
"illuminate/routing": "^6|^7|^8.67|^9|^10",
"mockery/mockery": "^1.4.4",
"orchestra/testbench": "^4.18|^5.8|^6.3|^7|^8",
"phpstan/phpstan": "^1",
"phpunit/phpunit": "^8.5|^9.4|^10",
"rector/rector": "^0.12.4",
"vlucas/phpdotenv": "^5.2.0",
"yoast/phpunit-polyfills": "^1.0.2"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-develop": "2.0-dev"
},
"laravel": {
"aliases": {
"JWTAuth": "PHPOpenSourceSaver\\JWTAuth\\Facades\\JWTAuth",
"JWTFactory": "PHPOpenSourceSaver\\JWTAuth\\Facades\\JWTFactory"
},
"providers": [
"PHPOpenSourceSaver\\JWTAuth\\Providers\\LaravelServiceProvider"
]
}
},
"autoload": {
"psr-4": {
"PHPOpenSourceSaver\\JWTAuth\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Sean Tymon",
"email": "tymon148@gmail.com",
"homepage": "https://tymon.xyz",
"role": "Forked package creator | Developer"
},
{
"name": "Eric Schricker",
"email": "eric.schricker@adiutabyte.de",
"role": "Developer"
},
{
"name": "Fabio William Conceição",
"email": "messhias@gmail.com",
"role": "Developer"
}
],
"description": "JSON Web Token Authentication for Laravel and Lumen",
"homepage": "https://github.com/PHP-Open-Source-Saver/jwt-auth",
"keywords": [
"Authentication",
"JSON Web Token",
"auth",
"jwt",
"laravel"
],
"support": {
"issues": "https://github.com/PHP-Open-Source-Saver/jwt-auth/issues",
"source": "https://github.com/PHP-Open-Source-Saver/jwt-auth"
},
"time": "2023-02-17T11:42:33+00:00"
},
{
"name": "phpdocumentor/reflection-common",
"version": "2.2.0",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionCommon.git",
"reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
"reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
"shasum": ""
},
"require": {
"php": "^7.2 || ^8.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-2.x": "2.x-dev"
}
},
"autoload": {
"psr-4": {
"phpDocumentor\\Reflection\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jaap van Otterdijk",
"email": "opensource@ijaap.nl"
}
],
"description": "Common reflection classes used by phpdocumentor to reflect the code structure",
"homepage": "http://www.phpdoc.org",
"keywords": [
"FQSEN",
"phpDocumentor",
"phpdoc",
"reflection",
"static analysis"
],
"support": {
"issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
"source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
},
"time": "2020-06-27T09:03:43+00:00"
},
{
"name": "phpdocumentor/reflection-docblock",
"version": "5.3.0",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
"reference": "622548b623e81ca6d78b721c5e029f4ce664f170"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170",
"reference": "622548b623e81ca6d78b721c5e029f4ce664f170",
"shasum": ""
},
"require": {
"ext-filter": "*",
"php": "^7.2 || ^8.0",
"phpdocumentor/reflection-common": "^2.2",
"phpdocumentor/type-resolver": "^1.3",
"webmozart/assert": "^1.9.1"
},
"require-dev": {
"mockery/mockery": "~1.3.2",
"psalm/phar": "^4.8"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "5.x-dev"
}
},
"autoload": {
"psr-4": {
"phpDocumentor\\Reflection\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Mike van Riel",
"email": "me@mikevanriel.com"
},
{
"name": "Jaap van Otterdijk",
"email": "account@ijaap.nl"
}
],
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
"support": {
"issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
"source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0"
},
"time": "2021-10-19T17:43:47+00:00"
},
{
"name": "phpdocumentor/type-resolver",
"version": "1.7.3",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/TypeResolver.git",
"reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419",
"reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419",
"shasum": ""
},
"require": {
"doctrine/deprecations": "^1.0",
"php": "^7.4 || ^8.0",
"phpdocumentor/reflection-common": "^2.0",
"phpstan/phpdoc-parser": "^1.13"
},
"require-dev": {
"ext-tokenizer": "*",
"phpbench/phpbench": "^1.2",
"phpstan/extension-installer": "^1.1",
"phpstan/phpstan": "^1.8",
"phpstan/phpstan-phpunit": "^1.1",
"phpunit/phpunit": "^9.5",
"rector/rector": "^0.13.9",
"vimeo/psalm": "^4.25"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"Termwind\\Laravel\\TermwindServiceProvider"
]
"branch-alias": {
"dev-1.x": "1.x-dev"
}
},
"autoload": {
"files": [
"src/Functions.php"
],
"psr-4": {
"Termwind\\": "src/"
"phpDocumentor\\Reflection\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
......@@ -2280,38 +3122,16 @@
],
"authors": [
{
"name": "Nuno Maduro",
"email": "enunomaduro@gmail.com"
"name": "Mike van Riel",
"email": "me@mikevanriel.com"
}
],
"description": "Its like Tailwind CSS, but for the console.",
"keywords": [
"cli",
"console",
"css",
"package",
"php",
"style"
],
"description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
"support": {
"issues": "https://github.com/nunomaduro/termwind/issues",
"source": "https://github.com/nunomaduro/termwind/tree/v1.15.1"
"issues": "https://github.com/phpDocumentor/TypeResolver/issues",
"source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.3"
},
"funding": [
{
"url": "https://www.paypal.com/paypalme/enunomaduro",
"type": "custom"
},
{
"url": "https://github.com/nunomaduro",
"type": "github"
},
{
"url": "https://github.com/xiCO2k",
"type": "github"
}
],
"time": "2023-02-08T01:06:31+00:00"
"time": "2023-08-12T11:01:26+00:00"
},
{
"name": "phpoption/phpoption",
......@@ -2389,6 +3209,102 @@
"time": "2023-02-25T19:38:58+00:00"
},
{
"name": "phpstan/phpdoc-parser",
"version": "1.24.2",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpdoc-parser.git",
"reference": "bcad8d995980440892759db0c32acae7c8e79442"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bcad8d995980440892759db0c32acae7c8e79442",
"reference": "bcad8d995980440892759db0c32acae7c8e79442",
"shasum": ""
},
"require": {
"php": "^7.2 || ^8.0"
},
"require-dev": {
"doctrine/annotations": "^2.0",
"nikic/php-parser": "^4.15",
"php-parallel-lint/php-parallel-lint": "^1.2",
"phpstan/extension-installer": "^1.0",
"phpstan/phpstan": "^1.5",
"phpstan/phpstan-phpunit": "^1.1",
"phpstan/phpstan-strict-rules": "^1.0",
"phpunit/phpunit": "^9.5",
"symfony/process": "^5.2"
},
"type": "library",
"autoload": {
"psr-4": {
"PHPStan\\PhpDocParser\\": [
"src/"
]
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "PHPDoc parser with support for nullable, intersection and generic types",
"support": {
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
"source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.2"
},
"time": "2023-09-26T12:28:12+00:00"
},
{
"name": "psr/cache",
"version": "3.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/cache.git",
"reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
"reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
"shasum": ""
},
"require": {
"php": ">=8.0.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Cache\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "https://www.php-fig.org/"
}
],
"description": "Common interface for caching libraries",
"keywords": [
"cache",
"psr",
"psr-6"
],
"support": {
"source": "https://github.com/php-fig/cache/tree/3.0.0"
},
"time": "2021-02-03T23:26:27+00:00"
},
{
"name": "psr/clock",
"version": "1.0.0",
"source": {
......@@ -4393,6 +5309,74 @@
"time": "2023-07-28T09:04:16+00:00"
},
{
"name": "symfony/polyfill-php56",
"version": "v1.20.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php56.git",
"reference": "54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675",
"reference": "54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"type": "metapackage",
"extra": {
"branch-alias": {
"dev-main": "1.20-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php56/tree/v1.20.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2020-10-23T14:02:19+00:00"
},
{
"name": "symfony/polyfill-php72",
"version": "v1.28.0",
"source": {
......@@ -5949,6 +6933,134 @@
"time": "2023-09-11T17:37:09+00:00"
},
{
"name": "mnabialek/laravel-sql-logger",
"version": "v2.2.10",
"source": {
"type": "git",
"url": "https://github.com/mnabialek/laravel-sql-logger.git",
"reference": "b7792f6ada6538e681f1e6280ac45fbbdc5a91e7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/mnabialek/laravel-sql-logger/zipball/b7792f6ada6538e681f1e6280ac45fbbdc5a91e7",
"reference": "b7792f6ada6538e681f1e6280ac45fbbdc5a91e7",
"shasum": ""
},
"require": {
"illuminate/container": "5.*|6.*|7.*|8.*|9.*|10.*",
"illuminate/filesystem": "5.*|6.*|7.*|8.*|9.*|10.*",
"illuminate/support": "5.*|6.*|7.*|8.*|9.*|10.*",
"mnabialek/laravel-version": "^1.0.6",
"nesbot/carbon": "~1.0 || ^2.0"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^3.0",
"laravel/framework": "10.*",
"mockery/mockery": "^1.0",
"php-coveralls/php-coveralls": "^2.0",
"phpunit/phpunit": "^10.0"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"Mnabialek\\LaravelSqlLogger\\Providers\\ServiceProvider"
]
},
"thanks": {
"name": "mnabialek/laravel-version",
"url": "https://github.com/mnabialek/laravel-version"
},
"suggest": {
"symfony/thanks": "Star packages you use running 'composer thanks' command"
}
},
"autoload": {
"psr-4": {
"Mnabialek\\LaravelSqlLogger\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Marcin Nabiałek",
"email": "dev@nabialek.org"
}
],
"description": "Log SQL queries in Laravel/Lumen framework",
"keywords": [
"laravel",
"log",
"log sql",
"log sql queries",
"logger",
"lumen",
"sql",
"sql log",
"sql logger"
],
"support": {
"issues": "https://github.com/mnabialek/laravel-sql-logger/issues",
"source": "https://github.com/mnabialek/laravel-sql-logger/tree/v2.2.10"
},
"time": "2023-02-25T06:34:03+00:00"
},
{
"name": "mnabialek/laravel-version",
"version": "v1.0.7",
"source": {
"type": "git",
"url": "https://github.com/mnabialek/laravel-version.git",
"reference": "7950903b3acc2b73fc3f5cea976761560e6b0260"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/mnabialek/laravel-version/zipball/7950903b3acc2b73fc3f5cea976761560e6b0260",
"reference": "7950903b3acc2b73fc3f5cea976761560e6b0260",
"shasum": ""
},
"require": {
"illuminate/container": "5.*|6.*|7.*|8.*|9.*|10.*"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^2.9",
"mockery/mockery": "^1.0",
"php-coveralls/php-coveralls": "^2.0",
"phpunit/phpunit": "^10.0"
},
"type": "library",
"autoload": {
"psr-4": {
"Mnabialek\\LaravelVersion\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Marcin Nabiałek",
"email": "dev@nabialek.org"
}
],
"description": "Get Laravel/Lumen version",
"keywords": [
"laravel",
"laravel version",
"lumen",
"lumen version"
],
"support": {
"issues": "https://github.com/mnabialek/laravel-version/issues",
"source": "https://github.com/mnabialek/laravel-version/tree/v1.0.7"
},
"time": "2023-02-26T07:18:01+00:00"
},
{
"name": "mockery/mockery",
"version": "1.6.6",
"source": {
......
<?php
return [
/*
|--------------------------------------------------------------------------
| Standards Tree
|--------------------------------------------------------------------------
|
| Versioning an API with Dingo revolves around content negotiation and
| custom MIME types. A custom type will belong to one of three
| standards trees, the Vendor tree (vnd), the Personal tree
| (prs), and the Unregistered tree (x).
|
| By default the Unregistered tree (x) is used, however, should you wish
| to you can register your type with the IANA. For more details:
| https://tools.ietf.org/html/rfc6838
|
*/
'standardsTree' => env('API_STANDARDS_TREE', 'x'),
/*
|--------------------------------------------------------------------------
| API Subtype
|--------------------------------------------------------------------------
|
| Your subtype will follow the standards tree you use when used in the
| "Accept" header to negotiate the content type and version.
|
| For example: Accept: application/x.SUBTYPE.v1+json
|
*/
'subtype' => env('API_SUBTYPE', ''),
/*
|--------------------------------------------------------------------------
| Default API Version
|--------------------------------------------------------------------------
|
| This is the default version when strict mode is disabled and your API
| is accessed via a web browser. It's also used as the default version
| when generating your APIs documentation.
|
*/
'version' => env('API_VERSION', 'v1'),
/*
|--------------------------------------------------------------------------
| Default API Prefix
|--------------------------------------------------------------------------
|
| A default prefix to use for your API routes so you don't have to
| specify it for each group.
|
*/
'prefix' => env('API_PREFIX', null),
/*
|--------------------------------------------------------------------------
| Default API Domain
|--------------------------------------------------------------------------
|
| A default domain to use for your API routes so you don't have to
| specify it for each group.
|
*/
'domain' => env('API_DOMAIN', null),
/*
|--------------------------------------------------------------------------
| Name
|--------------------------------------------------------------------------
|
| When documenting your API using the API Blueprint syntax you can
| configure a default name to avoid having to manually specify
| one when using the command.
|
*/
'name' => env('API_NAME', null),
/*
|--------------------------------------------------------------------------
| Conditional Requests
|--------------------------------------------------------------------------
|
| Globally enable conditional requests so that an ETag header is added to
| any successful response. Subsequent requests will perform a check and
| will return a 304 Not Modified. This can also be enabled or disabled
| on certain groups or routes.
|
*/
'conditionalRequest' => env('API_CONDITIONAL_REQUEST', true),
/*
|--------------------------------------------------------------------------
| Strict Mode
|--------------------------------------------------------------------------
|
| Enabling strict mode will require clients to send a valid Accept header
| with every request. This also voids the default API version, meaning
| your API will not be browsable via a web browser.
|
*/
'strict' => env('API_STRICT', false),
/*
|--------------------------------------------------------------------------
| Debug Mode
|--------------------------------------------------------------------------
|
| Enabling debug mode will result in error responses caused by thrown
| exceptions to have a "debug" key that will be populated with
| more detailed information on the exception.
|
*/
'debug' => env('API_DEBUG', false),
/*
|--------------------------------------------------------------------------
| Generic Error Format
|--------------------------------------------------------------------------
|
| When some HTTP exceptions are not caught and dealt with the API will
| generate a generic error response in the format provided. Any
| keys that aren't replaced with corresponding values will be
| removed from the final response.
|
*/
'errorFormat' => [
'message' => ':message',
'errors' => ':errors',
'code' => ':code',
'status_code' => ':status_code',
'debug' => ':debug',
],
/*
|--------------------------------------------------------------------------
| API Middleware
|--------------------------------------------------------------------------
|
| Middleware that will be applied globally to all API requests.
|
*/
'middleware' => [
],
/*
|--------------------------------------------------------------------------
| Authentication Providers
|--------------------------------------------------------------------------
|
| The authentication providers that should be used when attempting to
| authenticate an incoming API request.
|
*/
'auth' => [
'jwt' => 'Dingo\Api\Auth\Provider\JWT',
],
/*
|--------------------------------------------------------------------------
| Throttling / Rate Limiting
|--------------------------------------------------------------------------
|
| Consumers of your API can be limited to the amount of requests they can
| make. You can create your own throttles or simply change the default
| throttles.
|
*/
'throttling' => [
],
/*
|--------------------------------------------------------------------------
| Response Transformer
|--------------------------------------------------------------------------
|
| Responses can be transformed so that they are easier to format. By
| default a Fractal transformer will be used to transform any
| responses prior to formatting. You can easily replace
| this with your own transformer.
|
*/
'transformer' => env('API_TRANSFORMER', Dingo\Api\Transformer\Adapter\Fractal::class),
/*
|--------------------------------------------------------------------------
| Response Formats
|--------------------------------------------------------------------------
|
| Responses can be returned in multiple formats by registering different
| response formatters. You can also customize an existing response
| formatter with a number of options to configure its output.
|
*/
'defaultFormat' => env('API_DEFAULT_FORMAT', 'json'),
'formats' => [
'json' => Dingo\Api\Http\Response\Format\Json::class,
],
'formatsOptions' => [
'json' => [
'pretty_print' => env('API_JSON_FORMAT_PRETTY_PRINT_ENABLED', false),
'indent_style' => env('API_JSON_FORMAT_INDENT_STYLE', 'space'),
'indent_size' => env('API_JSON_FORMAT_INDENT_SIZE', 2),
],
],
];
......@@ -14,7 +14,7 @@ return [
*/
'defaults' => [
'guard' => 'web',
'guard' => 'api',
'passwords' => 'users',
],
......@@ -40,6 +40,10 @@ return [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'jwt',
'provider' => 'users',
],
],
/*
......@@ -62,7 +66,7 @@ return [
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
'model' => \Modules\Admin\Entities\AdminUser::class,
],
// 'users' => [
......@@ -110,6 +114,4 @@ return [
|
*/
'password_timeout' => 10800,
];
<?php
return [
/*
|--------------------------------------------------------------------------
| JWT Authentication Secret
|--------------------------------------------------------------------------
|
| Don't forget to set this in your .env file, as it will be used to sign
| your tokens. A helper command is provided for this:
| `php artisan jwt:secret`
|
| Note: This will be used for Symmetric algorithms only (HMAC),
| since RSA and ECDSA use a private/public key combo (See below).
|
*/
'secret' => env('JWT_SECRET'),
/*
|--------------------------------------------------------------------------
| JWT Authentication Keys
|--------------------------------------------------------------------------
|
| The algorithm you are using, will determine whether your tokens are
| signed with a random string (defined in `JWT_SECRET`) or using the
| following public & private keys.
|
| Symmetric Algorithms:
| HS256, HS384 & HS512 will use `JWT_SECRET`.
|
| Asymmetric Algorithms:
| RS256, RS384 & RS512 / ES256, ES384 & ES512 will use the keys below.
|
*/
'keys' => [
/*
|--------------------------------------------------------------------------
| Public Key
|--------------------------------------------------------------------------
|
| A path or resource to your public key.
|
| E.g. 'file://path/to/public/key'
|
*/
'public' => env('JWT_PUBLIC_KEY'),
/*
|--------------------------------------------------------------------------
| Private Key
|--------------------------------------------------------------------------
|
| A path or resource to your private key.
|
| E.g. 'file://path/to/private/key'
|
*/
'private' => env('JWT_PRIVATE_KEY'),
/*
|--------------------------------------------------------------------------
| Passphrase
|--------------------------------------------------------------------------
|
| The passphrase for your private key. Can be null if none set.
|
*/
'passphrase' => env('JWT_PASSPHRASE'),
],
/*
|--------------------------------------------------------------------------
| JWT time to live
|--------------------------------------------------------------------------
|
| Specify the length of time (in minutes) that the token will be valid for.
| Defaults to 1 hour.
|
| You can also set this to null, to yield a never expiring token.
| Some people may want this behaviour for e.g. a mobile app.
| This is not particularly recommended, so make sure you have appropriate
| systems in place to revoke the token if necessary.
| Notice: If you set this to null you should remove 'exp' element from 'required_claims' list.
|
*/
'ttl' => env('JWT_TTL', 60*8),
/*
|--------------------------------------------------------------------------
| Refresh time to live
|--------------------------------------------------------------------------
|
| Specify the length of time (in minutes) that the token can be refreshed
| within. I.E. The user can refresh their token within a 2 week window of
| the original token being created until they must re-authenticate.
| Defaults to 2 weeks.
|
| You can also set this to null, to yield an infinite refresh time.
| Some may want this instead of never expiring tokens for e.g. a mobile app.
| This is not particularly recommended, so make sure you have appropriate
| systems in place to revoke the token if necessary.
|
*/
'refresh_ttl' => env('JWT_REFRESH_TTL', 20160),
/*
|--------------------------------------------------------------------------
| JWT hashing algorithm
|--------------------------------------------------------------------------
|
| Specify the hashing algorithm that will be used to sign the token.
|
| See here: https://github.com/namshi/jose/tree/master/src/Namshi/JOSE/Signer/OpenSSL
| for possible values.
|
*/
'algo' => env('JWT_ALGO', 'HS256'),
/*
|--------------------------------------------------------------------------
| Required Claims
|--------------------------------------------------------------------------
|
| Specify the required claims that must exist in any token.
| A TokenInvalidException will be thrown if any of these claims are not
| present in the payload.
|
*/
'required_claims' => [
'iss',
'iat',
'exp',
'nbf',
'sub',
'jti',
],
/*
|--------------------------------------------------------------------------
| Persistent Claims
|--------------------------------------------------------------------------
|
| Specify the claim keys to be persisted when refreshing a token.
| `sub` and `iat` will automatically be persisted, in
| addition to the these claims.
|
| Note: If a claim does not exist then it will be ignored.
|
*/
'persistent_claims' => [
// 'foo',
// 'bar',
],
/*
|--------------------------------------------------------------------------
| Lock Subject
|--------------------------------------------------------------------------
|
| This will determine whether a `prv` claim is automatically added to
| the token. The purpose of this is to ensure that if you have multiple
| authentication models e.g. `App\User` & `App\OtherPerson`, then we
| should prevent one authentication request from impersonating another,
| if 2 tokens happen to have the same id across the 2 different models.
|
| Under specific circumstances, you may want to disable this behaviour
| e.g. if you only have one authentication model, then you would save
| a little on token size.
|
*/
'lock_subject' => true,
/*
|--------------------------------------------------------------------------
| Leeway
|--------------------------------------------------------------------------
|
| This property gives the jwt timestamp claims some "leeway".
| Meaning that if you have any unavoidable slight clock skew on
| any of your servers then this will afford you some level of cushioning.
|
| This applies to the claims `iat`, `nbf` and `exp`.
|
| Specify in seconds - only if you know you need it.
|
*/
'leeway' => env('JWT_LEEWAY', 0),
/*
|--------------------------------------------------------------------------
| Blacklist Enabled
|--------------------------------------------------------------------------
|
| In order to invalidate tokens, you must have the blacklist enabled.
| If you do not want or need this functionality, then set this to false.
|
*/
'blacklist_enabled' => env('JWT_BLACKLIST_ENABLED', true),
/*
| -------------------------------------------------------------------------
| Blacklist Grace Period
| -------------------------------------------------------------------------
|
| When multiple concurrent requests are made with the same JWT,
| it is possible that some of them fail, due to token regeneration
| on every request.
|
| Set grace period in seconds to prevent parallel request failure.
|
*/
'blacklist_grace_period' => env('JWT_BLACKLIST_GRACE_PERIOD', 0),
/*
|--------------------------------------------------------------------------
| Show blacklisted token option
|--------------------------------------------------------------------------
|
| Specify if you want to show black listed token exception on the laravel logs.
|
*/
'show_black_list_exception' => env('JWT_SHOW_BLACKLIST_EXCEPTION', true),
/*
|--------------------------------------------------------------------------
| Cookies encryption
|--------------------------------------------------------------------------
|
| By default Laravel encrypt cookies for security reason.
| If you decide to not decrypt cookies, you will have to configure Laravel
| to not encrypt your cookie token by adding its name into the $except
| array available in the middleware "EncryptCookies" provided by Laravel.
| see https://laravel.com/docs/master/responses#cookies-and-encryption
| for details.
|
| Set it to true if you want to decrypt cookies.
|
*/
'decrypt_cookies' => false,
/*
|--------------------------------------------------------------------------
| Providers
|--------------------------------------------------------------------------
|
| Specify the various providers used throughout the package.
|
*/
'providers' => [
/*
|--------------------------------------------------------------------------
| JWT Provider
|--------------------------------------------------------------------------
|
| Specify the provider that is used to create and decode the tokens.
|
*/
'jwt' => PHPOpenSourceSaver\JWTAuth\Providers\JWT\Lcobucci::class,
/*
|--------------------------------------------------------------------------
| Authentication Provider
|--------------------------------------------------------------------------
|
| Specify the provider that is used to authenticate users.
|
*/
'auth' => PHPOpenSourceSaver\JWTAuth\Providers\Auth\Illuminate::class,
/*
|--------------------------------------------------------------------------
| Storage Provider
|--------------------------------------------------------------------------
|
| Specify the provider that is used to store tokens in the blacklist.
|
*/
'storage' => PHPOpenSourceSaver\JWTAuth\Providers\Storage\Illuminate::class,
],
];
<?php
use Nwidart\Modules\Activators\FileActivator;
use Nwidart\Modules\Commands;
return [
/*
|--------------------------------------------------------------------------
| Module Namespace
|--------------------------------------------------------------------------
|
| Default module namespace.
|
*/
'namespace' => 'Modules',
/*
|--------------------------------------------------------------------------
| Module Stubs
|--------------------------------------------------------------------------
|
| Default module stubs.
|
*/
'stubs' => [
'enabled' => false,
'path' => base_path('vendor/nwidart/laravel-modules/src/Commands/stubs'),
'files' => [
'routes/web' => 'Routes/web.php',
'routes/api' => 'Routes/api.php',
'views/index' => 'Resources/views/index.blade.php',
'views/master' => 'Resources/views/layouts/master.blade.php',
'scaffold/config' => 'Config/config.php',
'composer' => 'composer.json',
'assets/js/app' => 'Resources/assets/js/app.js',
'assets/sass/app' => 'Resources/assets/sass/app.scss',
'vite' => 'vite.config.js',
'package' => 'package.json',
],
'replacements' => [
'routes/web' => ['LOWER_NAME', 'STUDLY_NAME'],
'routes/api' => ['LOWER_NAME'],
'vite' => ['LOWER_NAME'],
'json' => ['LOWER_NAME', 'STUDLY_NAME', 'MODULE_NAMESPACE', 'PROVIDER_NAMESPACE'],
'views/index' => ['LOWER_NAME'],
'views/master' => ['LOWER_NAME', 'STUDLY_NAME'],
'scaffold/config' => ['STUDLY_NAME'],
'composer' => [
'LOWER_NAME',
'STUDLY_NAME',
'VENDOR',
'AUTHOR_NAME',
'AUTHOR_EMAIL',
'MODULE_NAMESPACE',
'PROVIDER_NAMESPACE',
],
],
'gitkeep' => true,
],
'paths' => [
/*
|--------------------------------------------------------------------------
| Modules path
|--------------------------------------------------------------------------
|
| This path used for save the generated module. This path also will be added
| automatically to list of scanned folders.
|
*/
'modules' => base_path('Modules'),
/*
|--------------------------------------------------------------------------
| Modules assets path
|--------------------------------------------------------------------------
|
| Here you may update the modules assets path.
|
*/
'assets' => public_path('modules'),
/*
|--------------------------------------------------------------------------
| The migrations path
|--------------------------------------------------------------------------
|
| Where you run 'module:publish-migration' command, where do you publish the
| the migration files?
|
*/
'migration' => base_path('database/migrations'),
/*
|--------------------------------------------------------------------------
| Generator path
|--------------------------------------------------------------------------
| Customise the paths where the folders will be generated.
| Set the generate key to false to not generate that folder
*/
'generator' => [
'config' => ['path' => 'Config', 'generate' => true],
'command' => ['path' => 'Console', 'generate' => true],
'channels' => ['path' => 'Broadcasting', 'generate' => true],
'migration' => ['path' => 'Database/Migrations', 'generate' => true],
'seeder' => ['path' => 'Database/Seeders', 'generate' => true],
'factory' => ['path' => 'Database/factories', 'generate' => true],
'model' => ['path' => 'Entities', 'generate' => true],
'observer' => ['path' => 'Observers', 'generate' => true],
'routes' => ['path' => 'Routes', 'generate' => true],
'controller' => ['path' => 'Http/Controllers', 'generate' => true],
'filter' => ['path' => 'Http/Middleware', 'generate' => true],
'request' => ['path' => 'Http/Requests', 'generate' => true],
'provider' => ['path' => 'Providers', 'generate' => true],
'assets' => ['path' => 'Resources/assets', 'generate' => true],
'lang' => ['path' => 'Resources/lang', 'generate' => true],
'views' => ['path' => 'Resources/views', 'generate' => true],
'test' => ['path' => 'Tests/Unit', 'generate' => true],
'test-feature' => ['path' => 'Tests/Feature', 'generate' => true],
'repository' => ['path' => 'Repositories', 'generate' => false],
'event' => ['path' => 'Events', 'generate' => false],
'listener' => ['path' => 'Listeners', 'generate' => false],
'policies' => ['path' => 'Policies', 'generate' => false],
'rules' => ['path' => 'Rules', 'generate' => false],
'jobs' => ['path' => 'Jobs', 'generate' => false],
'emails' => ['path' => 'Emails', 'generate' => false],
'notifications' => ['path' => 'Notifications', 'generate' => false],
'resource' => ['path' => 'Transformers', 'generate' => false],
'component-view' => ['path' => 'Resources/views/components', 'generate' => false],
'component-class' => ['path' => 'View/Components', 'generate' => false],
],
],
/*
|--------------------------------------------------------------------------
| Package commands
|--------------------------------------------------------------------------
|
| Here you can define which commands will be visible and used in your
| application. If for example you don't use some of the commands provided
| you can simply comment them out.
|
*/
'commands' => [
Commands\CommandMakeCommand::class,
Commands\ComponentClassMakeCommand::class,
Commands\ComponentViewMakeCommand::class,
Commands\ControllerMakeCommand::class,
Commands\ChannelMakeCommand::class,
Commands\DisableCommand::class,
Commands\DumpCommand::class,
Commands\EnableCommand::class,
Commands\EventMakeCommand::class,
Commands\FactoryMakeCommand::class,
Commands\JobMakeCommand::class,
Commands\ListenerMakeCommand::class,
Commands\MailMakeCommand::class,
Commands\MiddlewareMakeCommand::class,
Commands\NotificationMakeCommand::class,
Commands\ObserverMakeCommand::class,
Commands\PolicyMakeCommand::class,
Commands\ProviderMakeCommand::class,
Commands\InstallCommand::class,
Commands\LaravelModulesV6Migrator::class,
Commands\ListCommand::class,
Commands\ModuleDeleteCommand::class,
Commands\ModuleMakeCommand::class,
Commands\MigrateCommand::class,
Commands\MigrateFreshCommand::class,
Commands\MigrateRefreshCommand::class,
Commands\MigrateResetCommand::class,
Commands\MigrateRollbackCommand::class,
Commands\MigrateStatusCommand::class,
Commands\MigrationMakeCommand::class,
Commands\ModelMakeCommand::class,
Commands\ResourceMakeCommand::class,
Commands\RequestMakeCommand::class,
Commands\RuleMakeCommand::class,
Commands\RouteProviderMakeCommand::class,
Commands\PublishCommand::class,
Commands\PublishConfigurationCommand::class,
Commands\PublishMigrationCommand::class,
Commands\PublishTranslationCommand::class,
Commands\SeedCommand::class,
Commands\SeedMakeCommand::class,
Commands\SetupCommand::class,
Commands\TestMakeCommand::class,
Commands\UnUseCommand::class,
Commands\UpdateCommand::class,
Commands\UseCommand::class,
],
/*
|--------------------------------------------------------------------------
| Scan Path
|--------------------------------------------------------------------------
|
| Here you define which folder will be scanned. By default will scan vendor
| directory. This is useful if you host the package in packagist website.
|
*/
'scan' => [
'enabled' => false,
'paths' => [
base_path('vendor/*/*'),
],
],
/*
|--------------------------------------------------------------------------
| Composer File Template
|--------------------------------------------------------------------------
|
| Here is the config for composer.json file, generated by this package
|
*/
'composer' => [
'vendor' => 'nwidart',
'author' => [
'name' => 'Nicolas Widart',
'email' => 'n.widart@gmail.com',
],
'composer-output' => false,
],
/*
|--------------------------------------------------------------------------
| Caching
|--------------------------------------------------------------------------
|
| Here is the config for setting up caching feature.
|
*/
'cache' => [
'enabled' => false,
'driver' => 'file',
'key' => 'laravel-modules',
'lifetime' => 60,
],
/*
|--------------------------------------------------------------------------
| Choose what laravel-modules will register as custom namespaces.
| Setting one to false will require you to register that part
| in your own Service Provider class.
|--------------------------------------------------------------------------
*/
'register' => [
'translations' => true,
/**
* load files on boot or register method
*
* Note: boot not compatible with asgardcms
*
* @example boot|register
*/
'files' => 'register',
],
/*
|--------------------------------------------------------------------------
| Activators
|--------------------------------------------------------------------------
|
| You can define new types of activators here, file, database etc. The only
| required parameter is 'class'.
| The file activator will store the activation status in storage/installed_modules
*/
'activators' => [
'file' => [
'class' => FileActivator::class,
'statuses-file' => base_path('modules_statuses.json'),
'cache-key' => 'activator.installed',
'cache-lifetime' => 604800,
],
],
'activator' => 'file',
];
<?php
use Laravel\Sanctum\Sanctum;
return [
/*
|--------------------------------------------------------------------------
| Stateful Domains
|--------------------------------------------------------------------------
|
| Requests from the following domains / hosts will receive stateful API
| authentication cookies. Typically, these should include your local
| and production domains which access your API via a frontend SPA.
|
*/
'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf(
'%s%s',
'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1',
Sanctum::currentApplicationUrlWithPort()
))),
/*
|--------------------------------------------------------------------------
| Sanctum Guards
|--------------------------------------------------------------------------
|
| This array contains the authentication guards that will be checked when
| Sanctum is trying to authenticate a request. If none of these guards
| are able to authenticate the request, Sanctum will use the bearer
| token that's present on an incoming request for authentication.
|
*/
'guard' => ['web'],
/*
|--------------------------------------------------------------------------
| Expiration Minutes
|--------------------------------------------------------------------------
|
| This value controls the number of minutes until an issued token will be
| considered expired. If this value is null, personal access tokens do
| not expire. This won't tweak the lifetime of first-party sessions.
|
*/
'expiration' => null,
/*
|--------------------------------------------------------------------------
| Sanctum Middleware
|--------------------------------------------------------------------------
|
| When authenticating your first-party SPA with Sanctum you may need to
| customize some of the middleware Sanctum uses while processing the
| request. You may change the middleware listed below as required.
|
*/
'middleware' => [
'verify_csrf_token' => App\Http\Middleware\VerifyCsrfToken::class,
'encrypt_cookies' => App\Http\Middleware\EncryptCookies::class,
],
];
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('users');
}
};
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('password_reset_tokens', function (Blueprint $table) {
$table->string('email')->primary();
$table->string('token');
$table->timestamp('created_at')->nullable();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('password_reset_tokens');
}
};
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('failed_jobs', function (Blueprint $table) {
$table->id();
$table->string('uuid')->unique();
$table->text('connection');
$table->text('queue');
$table->longText('payload');
$table->longText('exception');
$table->timestamp('failed_at')->useCurrent();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('failed_jobs');
}
};
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('personal_access_tokens', function (Blueprint $table) {
$table->id();
$table->morphs('tokenable');
$table->string('name');
$table->string('token', 64)->unique();
$table->text('abilities')->nullable();
$table->timestamp('last_used_at')->nullable();
$table->timestamp('expires_at')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('personal_access_tokens');
}
};
<?php
return [
'online' => 'متصل',
'login' => 'تسجيل الدخول',
'logout' => 'تسجيل الخروج',
'setting' => 'الضبط',
'name' => 'الاسم',
'username' => 'اسم المستخدم',
'password' => 'الرقم السري',
'password_confirmation' => 'تأكيد الرقم السري',
'remember_me' => 'تذكرني',
'user_setting' => 'ضبط المستخدم',
'avatar' => 'الصورة',
'list' => 'القائمة',
'new' => 'جديد',
'create' => 'انشاء',
'delete' => 'مسح',
'remove' => 'حذف',
'edit' => 'تعديل',
'view' => 'عرض',
'continue_editing' => 'مواصلة التحرير',
'continue_creating' => 'تواصل خلق',
'detail' => 'التفاصيل',
'browse' => 'تصفح',
'reset' => 'تفريغ',
'export' => 'تصدير',
'batch_delete' => 'مسح بالجملة',
'save' => 'حفظ',
'refresh' => 'تحديث',
'order' => 'ترتيب',
'expand' => 'تكبير',
'collapse' => 'تصغير',
'filter' => 'تصنيف',
'search' => 'بحث',
'close' => 'اغلاق',
'show' => 'عرض',
'entries' => 'المدخلات',
'captcha' => 'كود التحقق',
'action' => 'الحدث',
'title' => 'العنوان',
'description' => 'الوصف',
'back' => 'عودة',
'back_to_list' => 'العودة الى القائمة',
'submit' => 'ارسال',
'menu' => 'القائمة',
'input' => 'المدخل',
'succeeded' => 'تمت بنجاح',
'failed' => 'فشل',
'delete_confirm' => 'هل انت متاكد من مسح هذا العنصر ',
'delete_succeeded' => 'تم الحذف بنجاح ! ',
'delete_failed' => 'فشل الحذف !',
'update_succeeded' => 'تم التعديل بنجاح !',
'save_succeeded' => 'تم الحفظ !',
'refresh_succeeded' => 'تم التحديث !',
'login_successful' => 'تم تسجيل الدخول بنجاح',
'choose' => 'اختر',
'choose_file' => 'اختر الملف',
'choose_image' => 'اختر الصورة',
'more' => 'المزيد',
'deny' => 'ليس لديك الاذن',
'administrator' => 'مسئول',
'roles' => 'القواعد',
'permissions' => 'الصلاحيات',
'slug' => 'المعرف',
'created_at' => 'تاريخ الانشاء',
'updated_at' => 'تاريخ التعديل',
'alert' => 'تحذير',
'parent_id' => 'الاصل',
'icon' => 'الرمز',
'uri' => 'URI',
'operation_log' => 'سجل التشغيل',
'parent_select_error' => 'خطأ في تحديد الاصل',
'pagination' => [
'range' => 'عرض :first الى :last من :total المدخلات',
],
'role' => 'القاعدة',
'permission' => 'الصلاحية',
'route' => 'المسار',
'confirm' => 'تأكيد',
'cancel' => 'إلغاء',
'http' => [
'method' => 'HTTP method',
'path' => 'HTTP path',
],
'all_methods_if_empty' => 'كل الوسائل فارغة',
'all' => 'الكل',
'current_page' => 'الصفحة الحالية',
'selected_rows' => 'الصفوف المختارة',
'upload' => 'رفع',
'new_folder' => 'مجلد جديد',
'time' => 'الوقت',
'size' => 'الحجم',
'listbox' => [
'text_total' => 'عرض الكل {0}',
'text_empty' => 'قائمة فارغة',
'filtered' => '{0} / {1}',
'filter_clear' => 'عرض الكل',
'filter_placeholder' => 'تنقية',
],
'menu_titles' => [],
'prev' => 'السابق',
'next' => 'التالي',
'quick_create' => 'إضافة سريعة',
];
<?php
return [
'online' => 'Aktiv',
'login' => 'Giriş',
'logout' => 'Çıxış',
'setting' => 'Ayarlar',
'name' => 'Ad',
'username' => 'İstifadəçi adı',
'password' => 'Şifrə',
'password_confirmation' => 'Şifrənin tekrarı',
'remember_me' => 'Məni xatırla',
'user_setting' => 'İstifadəçi ayarları',
'avatar' => 'Profil şəkli',
'list' => 'List',
'new' => 'Yeni',
'create' => 'Yarat',
'delete' => 'Sil',
'remove' => 'Kənarlaşdırın',
'edit' => 'Yenilə',
'view' => 'Bax',
'detail' => 'Detallar',
'browse' => 'Göz atın',
'reset' => 'Təmizlə',
'export' => 'İxrac edin',
'batch_delete' => 'Hamısını sil',
'save' => 'Yaddaşa ver',
'refresh' => 'Yenile',
'order' => 'Sırala',
'expand' => 'Genişlət',
'collapse' => 'Daralt',
'filter' => 'Filtrlə',
'search' => 'axtarış',
'close' => 'Bağla',
'show' => 'Göstər',
'entries' => 'qeydlər',
'captcha' => 'Doğrulama',
'action' => 'Fəaliyyət',
'title' => 'Başlıq',
'description' => 'Açıqlama',
'back' => 'Geri',
'back_to_list' => 'Listə geri qayıt',
'submit' => 'Göndər',
'continue_editing' => 'Redaktəyə davam et',
'continue_creating' => 'Yaratmağa davam et',
'menu' => 'Menyu',
'input' => 'Giriş',
'succeeded' => 'Uğurlu',
'failed' => 'Xəta baş verdi',
'delete_confirm' => 'Silmək istədiyinizə əminsiniz?',
'delete_succeeded' => 'Uğurla silindi!',
'delete_failed' => 'Silinərkən xəta baş verdi!',
'update_succeeded' => 'Uğurla yeniləndi!',
'save_succeeded' => 'Uğurla yadda saxlanıldı!',
'refresh_succeeded' => 'Uğurla yeniləndi!',
'login_successful' => 'Giriş uğurlu oldu',
'choose' => 'Seçin',
'choose_file' => 'Fayl seçin',
'choose_image' => 'Şəkil seçin',
'more' => 'Daha çox',
'deny' => 'İcazə yoxdur',
'administrator' => 'Rəhbər',
'roles' => 'Rollar',
'permissions' => 'İcazələr',
'slug' => 'Qalıcı link',
'created_at' => 'Yaradılma tarixi',
'updated_at' => 'Yenilənmə tarixi',
'alert' => 'Xəbərdarlıq',
'parent_id' => 'Valideyn',
'icon' => 'İkon',
'uri' => 'URL',
'operation_log' => 'Əməliyyat tarixçəsi',
'parent_select_error' => 'Üst xəta',
'pagination' => [
'range' => ':total qeyd içindən :first dən :last -ə kimi',
],
'role' => 'Rol',
'permission' => 'İcazə',
'route' => 'Yol',
'confirm' => 'Təsdiqlə',
'cancel' => 'Ləğv',
'http' => [
'method' => 'HTTP methodu',
'path' => 'HTTP qovluğu',
],
'all_methods_if_empty' => 'Bütün metodlar boşdursa',
'all' => 'Hamısı',
'current_page' => 'Cari səhifə',
'selected_rows' => 'Seçilənlər',
'upload' => 'Yüklə',
'new_folder' => 'Yeni qovluq',
'time' => 'Zaman',
'size' => 'Ölçü',
'listbox' => [
'text_total' => 'Ümumi {0} qeyd',
'text_empty' => 'Boş list',
'filtered' => '{0} / {1}',
'filter_clear' => 'Hamısını göstər',
'filter_placeholder' => 'Filtrlə',
],
'menu_titles' => [],
];
<?php
return [
'online' => 'অনলাইন',
'login' => 'লগিন',
'logout' => 'লগ আউট',
'setting' => 'সেটিংস',
'name' => 'নাম',
'username' => 'ব্যবহারকারীর নাম',
'password' => 'পাসওয়ার্ড',
'password_confirmation' => 'পাসওয়ার্ড নিশ্চিতকরণ',
'remember_me' => 'আমাকে মনে রাখুন',
'user_setting' => 'ব্যবহারকারীর সেটিংস',
'avatar' => 'ছবি',
'list' => 'তালিকা',
'new' => 'নতুন',
'create' => 'তৈরি করুন',
'delete' => 'মুছে ফেলুন',
'remove' => 'সরান',
'edit' => 'সম্পাদনা',
'view' => 'দেখুন',
'continue_editing' => 'সম্পাদনা অব্যাহত রাখুন',
'continue_creating' => 'তৈরি অব্যাহত রাখুন',
'detail' => 'বিস্তারিত',
'browse' => 'ব্রাউজ করুন',
'reset' => 'রিসেট',
'export' => 'এক্সপোর্ট',
'batch_delete' => 'গুচ্ছ আকারে মুছুন',
'save' => 'সংরক্ষণ',
'refresh' => 'রিফ্রেশ',
'order' => 'ক্রম',
'expand' => 'বর্ধিত',
'collapse' => 'বন্ধ',
'filter' => 'ফিল্টার',
'search' => 'খুঁজুন',
'close' => 'বন্ধ',
'show' => 'দেখান',
'entries' => 'অন্তর্ভুক্তিগুলি',
'captcha' => 'ক্যাপচা',
'action' => 'একশন',
'title' => 'শিরোনাম',
'description' => 'বর্ণনা',
'back' => 'ফিরে যান',
'back_to_list' => 'তালিকায় ফিরে যান',
'submit' => 'সাবমিট করন',
'menu' => 'মেন্যু',
'input' => 'ইনপুট',
'succeeded' => 'সফল হয়েছে',
'failed' => 'ব্যর্থ হয়েছে',
'delete_confirm' => 'আপনি কি এই আইটেমটি মুছে ফেলার বিষয়ে নিশ্চিত?',
'delete_succeeded' => 'মুছে ফেলতে সক্ষম হয়েছে।',
'delete_failed' => 'মুছে ফেলতে ব্যর্থ হয়েছে',
'update_succeeded' => 'সফলভবে আপডেট হয়েছে।',
'save_succeeded' => 'সফলভবে সংরক্ষণ হয়েছে।',
'refresh_succeeded' => 'সফলভবে রিফ্রেশ হয়েছে।',
'login_successful' => 'লগিন সফল হয়ছে',
'choose' => 'বাছাই করুন',
'choose_file' => 'ফাইল নির্বাচন করুন',
'choose_image' => 'ছবি সফলভবে সংরক্ষণ হয়েছে।',
'more' => 'আরও',
'deny' => 'অনুমতি অগ্রাহ্য হয়েছে',
'administrator' => 'এডমিনিস্ট্রেটর',
'roles' => 'রোলসমূহ',
'permissions' => 'পারমিশন সমূহ',
'slug' => 'স্লাগ',
'created_at' => 'তৈরি করা হয়েছে',
'updated_at' => 'আপডেট করা হয়েছে',
'alert' => 'সতর্কীকরণ',
'parent_id' => 'প্যারেন্ট',
'icon' => 'আইকন',
'uri' => 'URI',
'operation_log' => 'অপারেশন লগ',
'parent_select_error' => 'প্যারেন্ট নির্বাচন ভুল',
'pagination' => [
'range' => ':total টি রেকর্ডের মধ্যে :first থেকে :last টি দেখানো হচ্ছে',
],
'role' => 'রোল',
'permission' => 'পারমিশন',
'route' => 'রাউট',
'confirm' => 'নিশ্চিত করুন',
'cancel' => 'বাতিল',
'http' => [
'method' => 'HTTP method',
'path' => 'HTTP path',
],
'all_methods_if_empty' => 'All methods if empty',
'all' => 'সকল',
'current_page' => 'বর্তমান পৃষ্ঠা',
'selected_rows' => 'নির্বাচিত সারিগুলি',
'upload' => 'আপলোড',
'new_folder' => 'নতুন ফোল্ডার',
'time' => 'স্ময়',
'size' => 'সাইজ',
'listbox' => [
'text_total' => 'সবগুলি দেখানো হচ্ছে {0}',
'text_empty' => 'খালি তালিকা',
'filtered' => '{0} / {1}',
'filter_clear' => 'সবগুলি দেখান',
'filter_placeholder' => 'ফিল্টার',
],
'grid_items_selected' => '{n} টি আইটেম নির্বাচিত হয়েছে',
'menu_titles' => [],
'prev' => 'পূর্ববর্তী',
'next' => 'পরবর্তী',
'quick_create' => 'দ্রুত তৈরি করুন',
];
<?php
return [
'online' => 'Online',
'login' => 'Anmelden',
'logout' => 'Abmelden',
'setting' => 'Einstellungen',
'name' => 'Name',
'username' => 'Benutzername',
'password' => 'Passwort',
'password_confirmation' => 'Passwort bestätigung',
'remember_me' => 'Remember me',
'user_setting' => 'Benutzer Einstellungen',
'avatar' => 'Avatar',
'list' => 'Liste',
'new' => 'Neu',
'create' => 'Erstellen',
'delete' => 'Löschen',
'remove' => 'Entfernen',
'edit' => 'Bearbeiten',
'view' => 'Ansehen',
'continue_editing' => 'Weiter bearbeiten',
'continue_creating' => 'Weitere erstellen',
'detail' => 'Details',
'browse' => 'Auswählen',
'reset' => 'Zurücksetzen',
'export' => 'Exportieren',
'batch_delete' => 'Chargenlöschung',
'save' => 'Speichern',
'refresh' => 'Aktualisieren',
'order' => 'Order',
'expand' => 'Aufklappen',
'collapse' => 'Zuklappen',
'filter' => 'Filter',
'search' => 'Suche',
'close' => 'Schließen',
'show' => 'Anzeigen',
'entries' => 'Einträge',
'captcha' => 'Captcha',
'action' => 'Aktion',
'title' => 'Titel',
'description' => 'Beschreibung',
'back' => 'Zurück',
'back_to_list' => 'Zurück zur Liste',
'submit' => 'Absenden',
'menu' => 'Menü',
'input' => 'Eingabe',
'succeeded' => 'Erfolgreich',
'failed' => 'Gescheitert',
'delete_confirm' => 'Wollen Sie diesen Eintrag wirklich löschen?',
'delete_succeeded' => 'Löschen erfolgreich!',
'delete_failed' => 'Löschen gescheitert!',
'update_succeeded' => 'Aktualisierung erfolgreich!',
'save_succeeded' => 'Speichern erfolgreich!',
'refresh_succeeded' => 'Aktualisierung erfolgreich!',
'login_successful' => 'Anmeldung erfolgreich',
'choose' => 'Auswählen',
'choose_file' => 'Datei auswählen',
'choose_image' => 'Bild auswählen',
'more' => 'Mehr',
'deny' => 'Zugriff verweigert',
'administrator' => 'Administrator',
'roles' => 'Rollen',
'permissions' => 'Rechte',
'slug' => 'Schlagwort',
'created_at' => 'Erstellt am',
'updated_at' => 'Aktualisiert am',
'alert' => 'Warnung',
'parent_id' => 'Übergeordnete ID',
'icon' => 'Icon',
'uri' => 'URL',
'operation_log' => 'Betriebs Log',
'parent_select_error' => 'Fehler bei der Parent Auswahl',
'pagination' => [
'range' => 'Zeigt :first bis :last von gesamt :total Einträgen',
],
'role' => 'Rolle',
'permission' => 'Rechte',
'route' => 'Route',
'confirm' => 'Bestätigen',
'cancel' => 'Abbrechen',
'http' => [
'method' => 'HTTP Methode',
'path' => 'HTTP Pfad',
],
'all_methods_if_empty' => 'Alle Methoden wenn leer',
'all' => 'Alle',
'current_page' => 'Aktuelle Seite',
'selected_rows' => 'Ausgewählte Zeilen',
'upload' => 'Hochladen',
'new_folder' => 'Neuer Ordner',
'time' => 'Zeit',
'size' => 'Größe',
'listbox' => [
'text_total' => 'Zeige alle {0}',
'text_empty' => 'Leere Liste',
'filtered' => '{0} / {1}',
'filter_clear' => 'Filter zurücksetzen',
'filter_placeholder' => 'Filtern',
],
'grid_items_selected' => '{n} Einträge ausgewählt',
'menu_titles' => [],
'prev' => 'Vorherige',
'next' => 'Nächste',
'quick_create' => 'Schnellerstellung',
];
<?php
return [
'online' => 'Online',
'login' => 'Login',
'logout' => 'Logout',
'setting' => 'Setting',
'name' => 'Name',
'username' => 'Username',
'password' => 'Password',
'password_confirmation' => 'Password confirmation',
'remember_me' => 'Remember me',
'user_setting' => 'User setting',
'avatar' => 'Avatar',
'list' => 'List',
'new' => 'New',
'create' => 'Create',
'delete' => 'Delete',
'remove' => 'Remove',
'edit' => 'Edit',
'view' => 'View',
'continue_editing' => 'Continue editing',
'continue_creating' => 'Continue creating',
'detail' => 'Detail',
'browse' => 'Browse',
'reset' => 'Reset',
'export' => 'Export',
'batch_delete' => 'Batch delete',
'save' => 'Save',
'refresh' => 'Refresh',
'order' => 'Order',
'expand' => 'Expand',
'collapse' => 'Collapse',
'filter' => 'Filter',
'search' => 'Search',
'close' => 'Close',
'show' => 'Show',
'entries' => 'entries',
'captcha' => 'Captcha',
'action' => 'Action',
'title' => 'Title',
'description' => 'Description',
'back' => 'Back',
'back_to_list' => 'Back to List',
'submit' => 'Submit',
'menu' => 'Menu',
'input' => 'Input',
'succeeded' => 'Succeeded',
'failed' => 'Failed',
'delete_confirm' => 'Are you sure to delete this item ?',
'delete_succeeded' => 'Delete succeeded !',
'delete_failed' => 'Delete failed !',
'update_succeeded' => 'Update succeeded !',
'save_succeeded' => 'Save succeeded !',
'refresh_succeeded' => 'Refresh succeeded !',
'login_successful' => 'Login successful',
'choose' => 'Choose',
'choose_file' => 'Select file',
'choose_image' => 'Select image',
'more' => 'More',
'deny' => 'Permission denied',
'administrator' => 'Administrator',
'roles' => 'Roles',
'permissions' => 'Permissions',
'slug' => 'Slug',
'created_at' => 'Created At',
'updated_at' => 'Updated At',
'alert' => 'Alert',
'parent_id' => 'Parent',
'icon' => 'Icon',
'uri' => 'URI',
'operation_log' => 'Operation log',
'parent_select_error' => 'Parent select error',
'pagination' => [
'range' => 'Showing :first to :last of :total entries',
],
'role' => 'Role',
'permission' => 'Permission',
'route' => 'Route',
'confirm' => 'Confirm',
'cancel' => 'Cancel',
'http' => [
'method' => 'HTTP method',
'path' => 'HTTP path',
],
'all_methods_if_empty' => 'All methods if empty',
'all' => 'All',
'current_page' => 'Current page',
'selected_rows' => 'Selected rows',
'upload' => 'Upload',
'new_folder' => 'New folder',
'time' => 'Time',
'size' => 'Size',
'listbox' => [
'text_total' => 'Showing all {0}',
'text_empty' => 'Empty list',
'filtered' => '{0} / {1}',
'filter_clear' => 'Show all',
'filter_placeholder' => 'Filter',
],
'grid_items_selected' => '{n} items selected',
'menu_titles' => [],
'prev' => 'Prev',
'next' => 'Next',
'quick_create' => 'Quick create',
];
<?php
return [
'online' => 'en línea',
'login' => 'Iniciar sesión',
'logout' => 'Cerrar sesión',
'setting' => 'Ajustes',
'name' => 'Nombre',
'username' => 'Nombre de usuario',
'password' => 'Contraseña',
'password_confirmation' => 'Confirmación de contraseña',
'remember_me' => 'Recordarme',
'user_setting' => 'Configuración del usuario',
'avatar' => 'Avatar',
'list' => 'Lista',
'new' => 'Nuevo',
'create' => 'Crear',
'delete' => 'Eliminar',
'remove' => 'Retirar',
'edit' => 'Editar',
'view' => 'Ver',
'continue_editing' => 'Continua editando',
'continue_creating' => 'Sigue creando',
'detail' => 'Detalle',
'browse' => 'vistazo',
'reset' => 'Restablecer',
'export' => 'Exportar',
'batch_delete' => 'Eliminar por lotes',
'save' => 'Guardar',
'refresh' => 'Refrescar',
'order' => 'Ordenar',
'expand' => 'Expandir',
'collapse' => 'Colapsar',
'filter' => 'Filtrar',
'search' => 'Buscar',
'close' => 'Cerrar',
'show' => 'Mostrar',
'entries' => 'Entradas',
'captcha' => 'Captcha',
'action' => 'Acción',
'title' => 'Título',
'description' => 'Descripción',
'back' => 'Volver',
'back_to_list' => 'Volver a la lista',
'submit' => 'Enviar',
'menu' => 'Menú',
'input' => 'Entrada',
'succeeded' => 'Exitoso',
'failed' => 'Fallido',
'delete_confirm' => '¿ Esta seguro de eliminar este elemento ?',
'delete_succeeded' => '¡ Eliminación exitosa !',
'delete_failed' => '¡ Eliminación fallida !',
'update_succeeded' => '¡ Actualización correcta !',
'save_succeeded' => '¡ Guardar con éxito !',
'refresh_succeeded' => '¡ Actualizar correctamente !',
'login_successful' => 'Inicio de sesión correcto',
'choose' => 'Elegir',
'choose_file' => 'Elegir archivo',
'choose_image' => 'Elegir imagen',
'more' => 'Más',
'deny' => 'Permiso denegado',
'administrator' => 'Administrador',
'roles' => 'Roles',
'permissions' => 'Permisos',
'slug' => 'Slug',
'created_at' => 'Creado el',
'updated_at' => 'Actualizado el',
'alert' => 'Alerta',
'parent_id' => 'Padre',
'icon' => 'Icono',
'uri' => 'URI',
'operation_log' => 'Registro',
'parent_select_error' => 'Error al seleccionar el elemento padre',
'pagination' => [
'range' => 'Mostrando :first a :last de :total elementos',
],
'role' => 'Rol',
'permission' => 'Permiso',
'route' => 'Route',
'confirm' => 'Confirmar',
'cancel' => 'Cancelar',
'http' => [
'method' => 'HTTP method',
'path' => 'HTTP path',
],
'all' => 'Todas',
'current_page' => 'Página actual',
'selected_rows' => 'Filas seleccionadas',
'menu_titles' => [],
];
<?php
return [
'online' => 'آنلاین',
'login' => 'ورود',
'logout' => 'خروج',
'setting' => 'تنظیمات',
'name' => 'نام',
'username' => 'نام کاربری',
'password' => 'کلمه عبور',
'password_confirmation' => 'تایید کلمه عبور',
'remember_me' => 'من را به خاطر بسپار',
'user_setting' => 'تنظیمات کاربر',
'avatar' => 'آواتار',
'list' => 'لیست',
'new' => 'جدید',
'create' => 'جدید',
'delete' => 'حذف کردن',
'remove' => 'پاک کردن',
'edit' => 'ویرایش کردن',
'view' => 'نمایش',
'continue_editing' => 'ادامه ویرایش',
'continue_creating' => 'ادامه را ایجاد کنید',
'detail' => 'جزئیات',
'browse' => 'پیمایش',
'reset' => 'نوسازی',
'export' => 'خروجی',
'batch_delete' => 'حذف گروهی',
'save' => 'ثبت کردن',
'refresh' => 'بروز سازی',
'order' => 'اولویت',
'expand' => 'گسترش',
'collapse' => 'بازکردن',
'filter' => 'فیلتر کردن',
'search' => 'جستجو کردن',
'close' => 'بستن',
'show' => 'نمایش',
'entries' => 'ورودی',
'captcha' => 'کپچا',
'action' => 'عملیات',
'title' => 'عنوان',
'description' => 'توضیحات',
'back' => 'بازگشت',
'back_to_list' => 'بازگشت به لیست',
'submit' => 'ثبت',
'menu' => 'منو',
'input' => 'ورودی',
'succeeded' => 'با موفقیت انجام شد',
'failed' => 'نا موفق',
'delete_confirm' => 'آیا از حذف این مورد اطمینان دارید؟',
'delete_succeeded' => 'حذف موفقیت آمیز انجام شد !',
'delete_failed' => 'حذف نا موفق بود !',
'update_succeeded' => 'ویرایش با موفقیت انجام شد !',
'save_succeeded' => 'ثبت با موفقیت انجام شد !',
'refresh_succeeded' => 'بروزسانی با موفقیت انجام شد !',
'login_successful' => 'ورود با موفقیت انجام شد',
'choose' => 'انتخاب کردن',
'choose_file' => 'انتخاب فایل',
'choose_image' => 'انتخاب عکس',
'more' => 'بیشتر',
'deny' => 'دسترسی غیر مجاز',
'administrator' => 'ادمین',
'roles' => 'دسترسی ها',
'permissions' => 'اجازه ها',
'slug' => 'نامک',
'created_at' => 'ساخته شده در',
'updated_at' => 'ویرایش شده در',
'alert' => 'هشدار',
'parent_id' => 'والد',
'icon' => 'آیکون',
'uri' => 'آدرس',
'operation_log' => 'لاگ عملیاتی',
'parent_select_error' => 'انتخاب والد با خطا مواجه شد',
'pagination' => [
'range' => 'نمایش از :first تا :last از کل :total',
],
'role' => 'دسترسی ها',
'permission' => 'اجازه ها',
'route' => 'مسیرها',
'confirm' => 'تایید',
'cancel' => 'لغو',
'http' => [
'method' => 'HTTP متد',
'path' => 'HTTP مسیر',
],
'all_methods_if_empty' => 'همه متدها خالی است',
'all' => 'همه',
'current_page' => 'همین صفحه',
'selected_rows' => 'انتخاب سطر',
'upload' => 'آپلود',
'new_folder' => 'پوشه جدید',
'time' => 'زمان',
'size' => 'حجم',
'listbox' => [
'text_total' => 'درحال نمایش همه {0}',
'text_empty' => 'لیست خالی است',
'filtered' => '{0} / {1}',
'filter_clear' => 'نمایش همه',
'filter_placeholder' => 'فیلتر کردن',
],
'menu_titles' => [
'dashboard' => 'داشبورد',
'admin' => 'ادمین',
'users' => 'کاربران',
'roles' => 'نقش ها',
'permission' => 'دسترسی ها',
'menu' => 'منو',
'operation_log' => 'گزارش عملیات',
],
];
<?php
return [
'online' => 'En ligne',
'login' => 'Connexion',
'logout' => 'Déconnexion',
'setting' => 'Paramètres',
'name' => 'Nom',
'username' => 'Nom d\'utilisateur',
'password' => 'Mot de passe',
'password_confirmation' => 'Confirmez votre mot de passe',
'remember_me' => 'Rester connecté',
'user_setting' => 'Paramètres',
'avatar' => 'Avatar',
'list' => 'Liste',
'new' => 'Nouveau',
'create' => 'Créer',
'delete' => 'Supprimer',
'remove' => 'Enlèver',
'edit' => 'Editer',
'view' => 'Voir',
'continue_editing' => 'Continuer l\'édition',
'continue_creating' => 'Continuer à créer',
'detail' => 'Détail',
'browse' => 'Naviguer',
'reset' => 'Réinitialiser',
'export' => 'Exporter',
'batch_delete' => 'Supprimer en masse',
'save' => 'Sauvegarder',
'refresh' => 'Rafraîchir',
'order' => 'Commander',
'expand' => 'Déplier',
'collapse' => 'Replier',
'filter' => 'Filtre',
'search' => 'Chercher',
'close' => 'Fermer',
'show' => 'Affiche',
'entries' => 'lignes',
'captcha' => 'Captcha',
'action' => 'Action',
'title' => 'Titre',
'description' => 'Description',
'back' => 'Retourner',
'back_to_list' => 'Retourne à la liste',
'submit' => 'Soumettre',
'menu' => 'Menu',
'input' => 'Entrée',
'succeeded' => 'Réussi',
'failed' => 'Failli',
'delete_confirm' => 'Êtes vous bien certain de vouloir supprimer cet élement ?',
'delete_succeeded' => 'L\'élement a bien été supprimé !',
'delete_failed' => 'L\'effacement a échoué !',
'update_succeeded' => 'Changements sont bien mis à jour !',
'save_succeeded' => 'Changements sauvés !',
'refresh_succeeded' => 'Rafraîchissement réussi !',
'login_successful' => 'Connexion réussie',
'choose' => 'Choisissez',
'choose_file' => 'Choisissez un fichier',
'choose_image' => 'Choisissez une image',
'more' => 'Plus',
'deny' => 'Permission refusée',
'administrator' => 'Administrateur',
'roles' => 'Rôles',
'permissions' => 'Droits',
'slug' => 'Slug',
'created_at' => 'Créé à',
'updated_at' => 'Mis à jour à',
'alert' => 'Alerte',
'parent_id' => 'Parent',
'icon' => 'Icône',
'uri' => 'URI',
'operation_log' => 'Journal des opérations',
'parent_select_error' => 'Parent select erreur',
'pagination' => [
'range' => ':first à :last de :total lignes',
],
'role' => 'Rôle',
'permission' => 'Permission',
'route' => 'Route',
'confirm' => 'Confirmer',
'cancel' => 'Annuler',
'http' => [
'method' => 'HTTP méthode',
'path' => 'HTTP chemin',
],
'all_methods_if_empty' => 'Toutes méthodes si vide',
'all' => 'Tous',
'current_page' => 'La page actuelle',
'selected_rows' => 'Les lignes sélectionnées',
'upload' => 'Téléverser',
'new_folder' => 'Nouveau dossier',
'time' => 'Temps',
'size' => 'Taille',
'listbox' => [
'text_total' => 'Affichant toutes {0}',
'text_empty' => 'Liste vide',
'filtered' => '{0} / {1}',
'filter_clear' => 'Affichez tous',
'filter_placeholder' => 'Filtre',
],
'menu_titles' => [],
];
<?php
return [
'online' => 'און ליין',
'login' => 'כניסה',
'logout' => 'יציאה',
'setting' => 'הגדרות',
'name' => 'שם',
'username' => 'שם משתמש',
'password' => 'סיסמא',
'password_confirmation' => 'שוב סיסמא',
'remember_me' => 'זכור אותי',
'user_setting' => 'הגדרות משתמש',
'avatar' => 'תמונה',
'list' => 'רשימה',
'new' => 'חדש',
'create' => 'יצירה',
'delete' => 'מחיקה',
'remove' => 'הסרה',
'edit' => 'עריכה',
'view' => 'צפייה',
'continue_editing' => 'המשך בעריכה',
'continue_creating' => 'המשך ליצור',
'detail' => 'פרט',
'browse' => 'דפדוף',
'reset' => 'אתחול',
'export' => 'ייצוא',
'batch_delete' => 'מחק מסומנים',
'save' => 'שמור',
'refresh' => 'רענן',
'order' => 'סדר',
'expand' => 'הרחב',
'collapse' => 'פתח',
'filter' => 'חיפוש',
'search' => 'לחפש',
'close' => 'סגור',
'show' => 'צפה',
'entries' => 'רשומות',
'captcha' => 'קאפצ\'ה',
'action' => 'פעולה',
'title' => 'כותרת',
'description' => 'תאור',
'back' => 'חזרה',
'back_to_list' => 'חזרה לרשימה',
'submit' => 'שלח',
'menu' => 'תפריט',
'input' => 'קלט',
'succeeded' => 'הצלחה',
'failed' => 'כשלון',
'delete_confirm' => 'אתה בטוח שאתה רוצה למחוק?',
'delete_succeeded' => 'מחיקה הצליחה',
'delete_failed' => 'מחיקה נכשלה',
'update_succeeded' => 'עודכן בהצלחה',
'save_succeeded' => 'נשמר בהצלחה',
'refresh_succeeded' => 'רענון הצליחה',
'login_successful' => 'כניסה הצליחה',
'choose' => 'בחר',
'choose_file' => 'בחר קובץ',
'choose_image' => 'בחר תמונה',
'more' => 'עוד',
'deny' => 'אין הרשאות',
'administrator' => 'מנהל מערכת',
'roles' => 'תפקידים',
'permissions' => 'הרשאות',
'slug' => 'טקסט',
'created_at' => 'נוצר ב',
'updated_at' => 'עודכן ב',
'alert' => 'אזהרה',
'parent_id' => 'אב',
'icon' => 'אייקון',
'uri' => 'כתובת',
'operation_log' => 'לוג מערכת',
'parent_select_error' => 'בעייה בבחירת האב',
'pagination' => [
'range' => ':last מ :total תוצאות',
],
'menu_titles' => [],
];
<?php
return [
'online' => 'Daring',
'login' => 'Masuk',
'logout' => 'Keluar',
'setting' => 'Pengaturan',
'name' => 'Nama',
'username' => 'Username',
'password' => 'Sandi',
'password_confirmation' => 'Konfirmasi Sandi',
'remember_me' => 'Ingatkan saya',
'user_setting' => 'Pengaturan Pengguna',
'avatar' => 'Avatar',
'list' => 'Daftar',
'new' => 'Baru',
'create' => 'Buat',
'delete' => 'Hapus',
'remove' => 'Hapus',
'edit' => 'Ubah',
'view' => 'Lihat',
'continue_editing' => 'Lanjutkan Pengubahan',
'continue_creating' => 'Terus ciptakan',
'detail' => 'Detail',
'browse' => 'Jelajahi',
'reset' => 'Reset',
'export' => 'Ekspor',
'batch_delete' => 'Hapus massal',
'save' => 'Simpan',
'refresh' => 'Segarkan',
'order' => 'Urutan',
'expand' => 'Bentangkan',
'collapse' => 'Ciutkan',
'filter' => 'Saringan',
'search' => 'Cari',
'close' => 'Tutup',
'show' => 'Perlihatkan',
'entries' => 'Masukan',
'captcha' => 'Captcha',
'action' => 'Aksi',
'title' => 'Judul',
'description' => 'Deskripsi',
'back' => 'Kembali',
'back_to_list' => 'Kembali ke daftar',
'submit' => 'Submit',
'menu' => 'Menu',
'input' => 'Masukan',
'succeeded' => 'Berhasil',
'failed' => 'Gagal',
'delete_confirm' => 'Anda yakin ingin menghapus ini ?',
'delete_succeeded' => 'Berhasil menghapus !',
'delete_failed' => 'Gagal menghapus !',
'update_succeeded' => 'Berhasil mengubah !',
'save_succeeded' => 'Berhasil menyimpan !',
'refresh_succeeded' => 'Berhasil menyegarkan!',
'login_successful' => 'Berhasil masuk',
'choose' => 'Pilih',
'choose_file' => 'Pilih berkas',
'choose_image' => 'Pilih gambar',
'more' => 'Lebih banyak',
'deny' => 'Akses ditolak',
'administrator' => 'Administrator',
'roles' => 'Aturan',
'permissions' => 'Hak Akses',
'slug' => 'Slug',
'created_at' => 'Dibuat pada',
'updated_at' => 'Diubah pada',
'alert' => 'Peringatan',
'parent_id' => 'Induk',
'icon' => 'Ikon',
'uri' => 'URI',
'operation_log' => 'Riwayat Kegiatan',
'parent_select_error' => 'Kesalahan pemilihan induk',
'pagination' => [
'range' => 'Menampilkan :first dari :last dari :total masukan',
],
'role' => 'Aturan',
'permission' => 'Hak akses',
'route' => 'Rute',
'confirm' => 'Konfirmasi',
'cancel' => 'Batalkan',
'http' => [
'method' => 'HTTP method',
'path' => 'HTTP path',
],
'all_methods_if_empty' => 'Semua metode kosong',
'all' => 'Semua',
'current_page' => 'Halaman ini',
'selected_rows' => 'Baris terpilih',
'upload' => 'Unggah',
'new_folder' => 'Folder Baru',
'time' => 'Waktu',
'size' => 'Ukuran',
'listbox' => [
'text_total' => 'Semua {0}',
'text_empty' => 'Daftar kosong',
'filtered' => '{0} / {1}',
'filter_clear' => 'Lihat semua',
'filter_placeholder' => 'Saringan',
],
'grid_items_selected' => '{n} Item dipilih',
'menu_titles' => [],
'prev' => 'Sebelumnya',
'next' => 'Selanjutnya',
];
<?php
return [
'online' => 'オンライン',
'login' => 'ログイン',
'logout' => 'ログアウト',
'setting' => '設定',
'name' => '名称',
'username' => 'ユーザーID',
'password' => 'パスワード',
'password_confirmation' => '確認用パスワード',
'remember_me' => 'ログイン状態を記憶',
'user_setting' => 'ユーザー設定',
'avatar' => 'アバター',
'list' => '一覧',
'new' => '新規',
'create' => '作成',
'delete' => '削除',
'remove' => '消去',
'edit' => '編集',
'view' => '表示',
'continue_editing' => '編集を続ける',
'continue_creating' => '作成を続行する',
'detail' => '詳細',
'browse' => '参照',
'reset' => 'リセット',
'export' => '出力',
'batch_delete' => '一括削除',
'save' => '保存',
'refresh' => '再読込',
'order' => '順序',
'expand' => '展開',
'collapse' => '縮小',
'filter' => 'フィルタ',
'search' => 'サーチ',
'close' => '閉じる',
'show' => '表示',
'entries' => '件',
'captcha' => 'Captcha',
'action' => '操作',
'title' => 'タイトル',
'description' => '概要',
'back' => '戻る',
'back_to_list' => '一覧へ戻る',
'submit' => '送信',
'menu' => 'メニュー',
'input' => '入力',
'succeeded' => '成功',
'failed' => '失敗',
'delete_confirm' => '本当に削除しますか?',
'delete_succeeded' => '削除しました!',
'delete_failed' => '削除に失敗しました!',
'update_succeeded' => '更新しました!',
'save_succeeded' => '保存しました!',
'refresh_succeeded' => '更新しました!',
'login_successful' => 'ログインしました!',
'choose' => '選択',
'choose_file' => 'ファイルを選択',
'choose_image' => '画像を選択',
'more' => '続き',
'deny' => '権限がありません。',
'administrator' => '管理者',
'roles' => '役割',
'permissions' => '権限',
'slug' => 'スラッグ',
'created_at' => '作成日時',
'updated_at' => '更新日時',
'alert' => '注意',
'parent_id' => '親ID',
'icon' => 'アイコン',
'uri' => 'URI',
'operation_log' => '操作ログ',
'parent_select_error' => '親ID選択エラー',
'pagination' => [
'range' => '全 :total 件中 :first - :last 件目',
],
'role' => '役割',
'permission' => '権限',
'route' => 'Route',
'confirm' => '確認',
'cancel' => '取消',
'http' => [
'method' => 'HTTP method',
'path' => 'HTTP path',
],
'all_methods_if_empty' => '空欄の場合は全て',
'all' => '全て',
'current_page' => '現在のページ',
'selected_rows' => '選択行のみ',
'upload' => 'アップロード',
'new_folder' => '新規フォルダ',
'time' => '日時',
'size' => 'サイズ',
'listbox' => [
'text_total' => '計 {0} 個のアイテム',
'text_empty' => '空のリスト',
'filtered' => '{0} / {1}',
'filter_clear' => '全て表示',
'filter_placeholder' => 'フィルタ',
],
'menu_titles' => [],
];
<?php
return [
'online' => '온라인',
'login' => '로그인',
'logout' => '로그아웃',
'setting' => '설정',
'name' => '이름',
'username' => '아이디',
'password' => '비밀번호',
'password_confirmation' => '비밀번호 확인',
'remember_me' => '자동로그인',
'user_setting' => '사용자 설정',
'avatar' => '프로필',
'list' => '목록',
'new' => '만들기',
'create' => '생성',
'delete' => '삭제',
'remove' => '제거',
'edit' => '편집',
'view' => '보기',
'continue_editing' => '편집',
'continue_creating' => '계속 생성하기',
'detail' => '세부 사항',
'browse' => '찾아보기',
'reset' => '초기화',
'export' => '내보내기',
'batch_delete' => '일괄 삭제',
'save' => '저장',
'refresh' => '새로고침',
'order' => '정렬',
'expand' => '확대',
'collapse' => '축소',
'filter' => '필터',
'search' => '검색',
'close' => '닫기',
'show' => '보기',
'entries' => '항목',
'captcha' => '캡차',
'action' => '동작',
'title' => '제목',
'description' => '설명',
'back' => '돌아가기',
'back_to_list' => '목록으로 돌아가기',
'submit' => '전송',
'menu' => '메뉴',
'input' => '입력',
'succeeded' => '성공',
'failed' => '실패',
'delete_confirm' => '이 항목을 삭제하시겠습니까?',
'delete_succeeded' => '삭제 성공 !',
'delete_failed' => '삭제 실패 !',
'update_succeeded' => '수정 성공 !',
'save_succeeded' => '저장 성공 !',
'refresh_succeeded' => '새로고침 성공 !',
'login_successful' => '로그인 성공',
'choose' => '선택',
'choose_file' => '파일 선택',
'choose_image' => '이미지 선택',
'more' => '더 보기',
'deny' => '권한 거부',
'administrator' => '관리자',
'roles' => '역할',
'permissions' => '권한',
'slug' => '',
'created_at' => '생성일',
'updated_at' => '수정일',
'alert' => '경계경보',
'parent_id' => '상위',
'icon' => '아이콘',
'uri' => 'URI',
'operation_log' => '작업 로그',
'parent_select_error' => '상위 선택 오류',
'pagination' => [
'range' => '전체 :total, :first 에서 :last 항목',
],
'role' => '역할',
'permission' => '권한',
'route' => '경로',
'confirm' => '확인',
'cancel' => '취소',
'http' => [
'method' => 'HTTP 방법',
'path' => 'HTTP 경로',
],
'all_methods_if_empty' => '비어 있는 경우 모든 방법',
'all' => '전체',
'current_page' => '현재 페이지',
'selected_rows' => '선택된 행',
'upload' => '업로드',
'new_folder' => '새 폴더',
'time' => '시간',
'size' => '크기',
'listbox' => [
'text_total' => '전체 {0}',
'text_empty' => '빈 목록',
'filtered' => '{0} / {1}',
'filter_clear' => '전체 보기',
'filter_placeholder' => '필터',
],
'grid_items_selected' => '{n} 선택한 항목',
'menu_titles' => [],
];
<?php
return [
'online' => 'Online',
'login' => 'Masuk',
'logout' => 'Log keluar',
'setting' => 'Menetapkan',
'name' => 'Nama',
'username' => 'Nama pengguna',
'password' => 'Kata laluan',
'password_confirmation' => 'Sahkan kata laluan',
'remember_me' => 'Ingat saya',
'user_setting' => 'Tetapan pengguna',
'avatar' => 'Avatar',
'list' => 'Senarai',
'new' => 'Tambah',
'create' => 'Buat',
'delete' => 'Padam',
'remove' => 'Keluarkan',
'edit' => 'Edit',
'continue_editing' => 'Teruskan mengedit',
'continue_creating' => 'Terus mencipta',
'view' => 'Lihat',
'detail' => 'Terperinci',
'browse' => 'Semak imbas',
'reset' => 'Tetapkan semula',
'export' => 'Eksport',
'batch_delete' => 'Padam tanggal',
'save' => 'Simpan',
'refresh' => 'Muat semula',
'order' => 'Isih',
'expand' => 'Perluas',
'collapse' => 'Runtuh',
'filter' => 'Pemeriksaan',
'search' => 'Carian',
'close' => 'Tutup',
'show' => 'Paparan',
'entries' => 'Perkara',
'captcha' => 'Kod pengesahan',
'action' => 'Operasi',
'title' => 'Tajuk',
'description' => 'Pengenalan',
'back' => 'Kembali',
'back_to_list' => 'Senarai pemulangan',
'submit' => 'Hantar',
'menu' => 'Menu',
'input' => 'Input',
'succeeded' => 'Kejayaan',
'failed' => 'Kegagalan',
'delete_confirm' => 'Sahkan pemadaman?',
'delete_succeeded' => 'Dihapuskan berjaya!',
'delete_failed' => 'Padam gagal!',
'update_succeeded' => 'Berjaya dikemas kini!',
'save_succeeded' => 'Disimpan berjaya!',
'refresh_succeeded' => 'Segarkan semula!',
'login_successful' => 'Log masuk yang berjaya!',
'choose' => 'Pilih',
'choose_file' => 'Pilih fail',
'choose_image' => 'Pilih gambar',
'more' => 'Lebih banyak',
'deny' => 'Tiada akses',
'administrator' => 'Pentadbir',
'roles' => 'Peranan',
'permissions' => 'Kebenaran',
'slug' => 'Pengenalan',
'created_at' => 'Dicipta pada',
'updated_at' => 'Dikemaskini pada',
'alert' => 'Perhatian',
'parent_id' => 'Menu ibu bapa',
'icon' => 'Ikon',
'uri' => 'Jalan',
'operation_log' => 'Log operasi',
'parent_select_error' => 'Ralat pemilihan ibu bapa',
'pagination' => [
'range' => 'Dari :first Untuk :last ,Jumlah :total Perkara',
],
'role' => 'Peranan',
'permission' => 'Kebenaran',
'route' => 'Routing',
'confirm' => 'Sahkan',
'cancel' => 'Batalkan',
'http' => [
'method' => 'Kaedah HTTP',
'path' => 'Laluan HTTP',
],
'all_methods_if_empty' => 'Kosongkan mungkir kepada semua kaedah',
'all' => 'Semua',
'current_page' => 'Halaman semasa',
'selected_rows' => 'Barisan terpilih',
'upload' => 'Muat naik',
'new_folder' => 'Folder baru',
'time' => 'Masa',
'size' => 'Saiz',
'listbox' => [
'text_total' => 'Jumlah {0} Perkara',
'text_empty' => 'Senarai kosong',
'filtered' => '{0} / {1}',
'filter_clear' => 'Tunjukkan semua',
'filter_placeholder' => 'Penapis',
],
'menu_titles' => [],
];
<?php
return [
'online' => 'Online',
'login' => 'Aanmelden',
'logout' => 'Afmelden',
'setting' => 'Instellingen',
'name' => 'Naam',
'username' => 'Gebruikersnaam',
'password' => 'Wachtwoord',
'password_confirmation' => 'Wachtwoord bevestigen',
'remember_me' => 'Ingelogd blijven',
'user_setting' => 'Instellingen',
'avatar' => 'Profielfoto',
'list' => 'Lijst',
'new' => 'Nieuw',
'create' => 'Maak',
'delete' => 'Wissen',
'remove' => 'Verwijder',
'edit' => 'Wijzigen',
'view' => 'Toon',
'continue_editing' => 'Verder editeren',
'continue_creating' => 'Doorgaan met maken',
'detail' => 'Gedetailleerd',
'browse' => 'Selecteer',
'reset' => 'Reset',
'export' => 'Exporteer',
'batch_delete' => 'Verwijder meerdere',
'save' => 'Opslaan',
'refresh' => 'Vernieuw',
'order' => 'Sorteer',
'expand' => 'Openklappen',
'collapse' => 'Dichtklappen',
'filter' => 'Filter',
'search' => 'Zoeken',
'close' => 'Sluit',
'show' => 'Toon',
'entries' => 'rijen',
'captcha' => 'captcha',
'action' => 'Actie',
'title' => 'Titel',
'description' => 'Omschrijving',
'back' => 'Terug',
'back_to_list' => 'Terug naar lijst',
'submit' => 'Bevestig',
'menu' => 'Menu',
'input' => 'Input',
'succeeded' => 'Gelukt',
'failed' => 'Mislukt',
'delete_confirm' => 'Bent u zeker dat u dit item wilt verwijderen ?',
'delete_succeeded' => 'Verwijderd !',
'delete_failed' => 'Kon niet verwijderen !',
'update_succeeded' => 'Bijgewerkt !',
'save_succeeded' => 'Opgeslaan !',
'refresh_succeeded' => 'Vernieuwd !',
'login_successful' => 'Ingelogd',
'choose' => 'Kies',
'choose_file' => 'Kies een bestand',
'choose_image' => 'Kies een afbeelding',
'more' => 'Meer',
'deny' => 'Toegang geweigerd',
'administrator' => 'Beheerder',
'roles' => 'Rollen',
'permissions' => 'Rechten',
'slug' => 'Slug',
'created_at' => 'Gemaakt op',
'updated_at' => 'Gewijzigd op',
'alert' => 'Alert',
'parent_id' => 'Parent',
'icon' => 'Icoon',
'uri' => 'URI',
'operation_log' => 'Bewerkingslog',
'parent_select_error' => '\'Parent select\' fout',
'pagination' => [
'range' => ':first tot :last van :total rijen',
],
'role' => 'Rol',
'permission' => 'Permissie',
'route' => 'Route',
'confirm' => 'Bevestig',
'cancel' => 'Annuleer',
'http' => [
'method' => 'HTTP methode',
'path' => 'HTTP pad',
],
'all_methods_if_empty' => 'Alle methodes indien geen geselecteerd',
'all' => 'Alle',
'current_page' => 'Huidige pagina',
'selected_rows' => 'Geselecteerde rijen',
'upload' => 'Uploaden',
'new_folder' => 'Nieuwe map',
'time' => 'Tijd',
'size' => 'Grootte',
'listbox' => [
'text_total' => 'Alle {0} getoond',
'text_empty' => 'Lege lijst',
'filtered' => '{0} / {1}',
'filter_clear' => 'Toon alle',
'filter_placeholder' => 'Filter',
],
'grid_items_selected' => '{n} items geselecteerd',
'prev' => 'Vorige',
'next' => 'Volgende',
'quick_create' => 'Snel aanmaken',
'menu_titles' => [],
];
<?php
return [
'online' => 'Online',
'login' => 'Login',
'logout' => 'Logout',
'setting' => 'Ustawienia',
'name' => 'Nazwa',
'username' => 'Użytkownik',
'password' => 'Hasło',
'password_confirmation' => 'Powtórz hasło',
'remember_me' => 'Zapamiętaj mnie',
'user_setting' => 'Ustawienia użytkownika',
'avatar' => 'Avatar',
'list' => 'Lista',
'new' => 'Nowy',
'create' => 'Utwórz',
'delete' => 'Usuń',
'remove' => 'Usuń',
'edit' => 'Edytuj',
'view' => 'Zobacz',
'continue_editing' => 'Kontynuuj edycję',
'continue_creating' => 'Kontynuuj tworzenie',
'detail' => 'Szczegół',
'reset' => 'Resetuj',
'export' => 'Eksportuj',
'batch_delete' => 'Usuń wsadowo',
'save' => 'Zapisz',
'refresh' => 'Odśwież',
'order' => 'Sortuj',
'expand' => 'Rozwiń',
'collapse' => 'Zwiń',
'filter' => 'Filtruj',
'search' => 'Szukaj',
'close' => 'Zamknij',
'show' => 'Wyświetl',
'items' => 'element',
'entries' => 'wpisy',
'captcha' => 'Captcha',
'action' => 'Akcja',
'title' => 'Tytuł',
'description' => 'Opis',
'back' => 'Wróć',
'back_to_list' => 'Wróć do listy',
'submit' => 'Wyślij',
'menu' => 'Menu',
'input' => 'Pole',
'succeeded' => 'Sukces',
'failed' => 'Błąd',
'delete_confirm' => 'Czy na pewno chcesz usunąć?',
'delete_succeeded' => 'Pomyślnie usunięto!',
'delete_failed' => 'Usuwawnie nie powiodło się!',
'update_succeeded' => 'Pomyślnie zmieniono!',
'save_succeeded' => 'Pomyślnie zapisano!',
'refresh_succeeded' => 'Pomyślnie odświeżono!',
'login_successful' => 'Pomyślnie zalogowano',
'choose' => 'Wybierz',
'choose_file' => 'Wybierz plik',
'choose_image' => 'Wybierz obraz',
'more' => 'Więcej',
'deny' => 'Brak dostępu',
'administrator' => 'Administrator',
'roles' => 'Role',
'permissions' => 'Uprawnienia',
'slug' => 'skrót',
'created_at' => 'Utworzono',
'updated_at' => 'zmieniono',
'alert' => 'Alarm',
'parent_id' => 'Rodzic',
'icon' => 'Ikona',
'uri' => 'URI',
'operation_log' => 'Dziennik operacji',
'parent_select_error' => 'Wybór rodzica nie powiódł się',
'pagination' => [
'range' => 'Wyświetlono :first do :last z wszystkich :total',
],
'menu_titles' => [],
];
<?php
return [
'online' => 'Online',
'login' => 'Login',
'logout' => 'Logout',
'setting' => 'Configurações',
'name' => 'Nome',
'username' => 'Usuário',
'password' => 'Senha',
'password_confirmation' => 'Confirmação da Senha',
'remember_me' => 'Lembrar-me',
'user_setting' => 'Configurações do Usuário',
'avatar' => 'Avatar',
'list' => 'Lista',
'new' => 'Novo',
'create' => 'Criar',
'delete' => 'Apagar',
'remove' => 'Remover',
'edit' => 'Editar',
'view' => 'Visualizar',
'continue_editing' => 'Continuar editando',
'continue_creating' => 'Continue criando',
'detail' => 'Detalhe',
'browse' => 'Escolher',
'reset' => 'Resetar',
'export' => 'Exportar',
'batch_delete' => 'Apagar vários',
'save' => 'Salvar',
'refresh' => 'Atualizar',
'order' => 'Ordenar',
'expand' => 'Expandir',
'collapse' => 'Diminuir',
'filter' => 'Filtrar',
'search' => 'Pesquisa',
'close' => 'Fechar',
'show' => 'Mostrar',
'entries' => 'Entradas',
'captcha' => 'Captcha',
'action' => 'Ação',
'title' => 'Título',
'description' => 'Descrição',
'back' => 'Voltar',
'back_to_list' => 'Voltar para Listagem',
'submit' => 'Submeter',
'menu' => 'Menu',
'input' => 'Entrada',
'succeeded' => 'Completado com Êxito',
'failed' => 'Falhou',
'delete_confirm' => 'Tem a certeza que deseja apagar este item?',
'delete_succeeded' => 'Remoção completada com sucesso!',
'delete_failed' => 'Remoção falhou!',
'update_succeeded' => 'Atualização completada com sucesso!',
'save_succeeded' => 'Gravação completada com sucesso!',
'refresh_succeeded' => 'Atualizado com sucesso!',
'login_successful' => 'Login com sucesso',
'choose' => 'Escolher',
'choose_file' => 'Selecionar pasta',
'choose_image' => 'Selecionar imagem',
'more' => 'Mais',
'deny' => 'Permissão Negada',
'administrator' => 'Administrador',
'roles' => 'Papéis',
'permissions' => 'Permissões',
'slug' => 'Slug',
'created_at' => 'Criado em',
'updated_at' => 'Atualizado em',
'alert' => 'Alerta',
'parent_id' => 'Pai',
'icon' => 'Ícone',
'uri' => 'URI',
'operation_log' => 'Registo de Operações',
'parent_select_error' => 'Erro ao selecionar o pai',
'pagination' => [
'range' => 'Mostrando :first até :last de :total registros',
],
'role' => 'Papel',
'permission' => 'Permissão',
'route' => 'Rota',
'confirm' => 'Confirmar',
'cancel' => 'Cancelar',
'http' => [
'method' => 'Método HTTP',
'path' => 'Caminho HTTP',
],
'all_methods_if_empty' => 'Todos os métodos por defeito caso vazio.',
'all' => 'Tudo',
'current_page' => 'Página Atual',
'selected_rows' => 'Linhas Selecionadas',
'upload' => 'Upload',
'new_folder' => 'Nova Pasta',
'time' => 'Tempo',
'size' => 'Tamanho',
'listbox' => [
'text_total' => 'Mostrando todos {0}',
'text_empty' => 'Listagem Vazia',
'filtered' => '{0} / {1}',
'filter_clear' => 'Mostrar tudo',
'filter_placeholder' => 'Filtrar',
],
'menu_titles' => [],
];
<?php
return [
'online' => 'Online',
'login' => 'Login',
'logout' => 'Logout',
'setting' => 'Configurações',
'name' => 'Nome',
'username' => 'Nome de Utilizador',
'password' => 'Palavra-Passe',
'password_confirmation' => 'Confirmação de Palavra-Passe',
'remember_me' => 'Lembrar',
'user_setting' => 'Configurações de Utilizador',
'avatar' => 'Avatar',
'list' => 'Lista',
'new' => 'Novo',
'create' => 'Criar',
'delete' => 'Apagar',
'remove' => 'Remover',
'edit' => 'Editar',
'view' => 'Visualizar',
'continue_editing' => 'Continuar edição',
'continue_creating' => 'Continue criando',
'detail' => 'Detalhe',
'browse' => 'Escolher',
'reset' => 'Reset',
'export' => 'Exportar',
'batch_delete' => 'Apagar vários',
'save' => 'Guardar',
'refresh' => 'Actualizar',
'order' => 'Ordenar',
'expand' => 'Expandir',
'collapse' => 'Diminuir',
'filter' => 'Filtrar',
'search' => 'Pesquisa',
'close' => 'Fechar',
'show' => 'Mostrar',
'entries' => 'Entradas',
'captcha' => 'Captcha',
'action' => 'Acção',
'title' => 'Título',
'description' => 'Descrição',
'back' => 'Voltar',
'back_to_list' => 'Voltar para Listagem',
'submit' => 'Submeter',
'menu' => 'Menu',
'input' => 'Entrada',
'succeeded' => 'Completado com Êxito',
'failed' => 'Falhou',
'delete_confirm' => 'Tem a certeza que deseja apagar este item?',
'delete_succeeded' => 'Remoção completada com sucesso!',
'delete_failed' => 'Remoção falhou!',
'update_succeeded' => 'Actualização completada com sucesso!',
'save_succeeded' => 'Gravação completada com sucesso!',
'refresh_succeeded' => 'Actualizado com sucesso!',
'login_successful' => 'Login com sucesso',
'choose' => 'Escolher',
'choose_file' => 'Selecionar ficheiro',
'choose_image' => 'Selecionar imagem',
'more' => 'Mais',
'deny' => 'Permissão Negada',
'administrator' => 'Administrador',
'roles' => 'Papéis',
'permissions' => 'Permissões',
'slug' => 'Slug',
'created_at' => 'Criado em',
'updated_at' => 'Actualizado em',
'alert' => 'Alerta',
'parent_id' => 'Pai',
'icon' => 'Icone',
'uri' => 'URI',
'operation_log' => 'Registo de Operações',
'parent_select_error' => 'Erro ao selecionar o pai',
'pagination' => [
'range' => 'Mostrando :first até :last de :total entradas',
],
'role' => 'Papel',
'permission' => 'Permissão',
'route' => 'Rota',
'confirm' => 'Confirmar',
'cancel' => 'Cancelar',
'http' => [
'method' => 'Método HTTP',
'path' => 'Caminho HTTP',
],
'all_methods_if_empty' => 'Todos os métodos por defeito caso vazio.',
'all' => 'Tudo',
'current_page' => 'Página Actual',
'selected_rows' => 'Linhas Selecionadas',
'upload' => 'Upload',
'new_folder' => 'Nova Pasta',
'time' => 'Tempo',
'size' => 'Tamanho',
'listbox' => [
'text_total' => 'Mostrando todos {0}',
'text_empty' => 'Listagem Vazia',
'filtered' => '{0} / {1}',
'filter_clear' => 'Mostrar tudo',
'filter_placeholder' => 'Filtrar',
],
'menu_titles' => [],
];
<?php
return [
'online' => 'Онлайн',
'login' => 'Войти',
'logout' => 'Выйти',
'setting' => 'Настройка',
'name' => 'Имя',
'username' => 'Логин',
'password' => 'Пароль',
'password_confirmation' => 'Подтверждение пароля',
'remember_me' => 'Запомнить',
'user_setting' => 'Настройки пользователя',
'avatar' => 'Аватар',
'list' => 'Список',
'new' => 'Добавить',
'create' => 'Новая запись',
'delete' => 'Удалить',
'remove' => 'Удалить',
'edit' => 'Редактировать',
'view' => 'Посмотреть',
'continue_editing' => 'Продолжить редактировать',
'continue_creating' => 'Продолжить создание',
'detail' => 'Подробно',
'browse' => 'Выбор файла',
'reset' => 'Сбросить',
'export' => 'Экспорт',
'batch_delete' => 'Пакетное удаление',
'save' => 'Сохранить',
'refresh' => 'Обновить',
'order' => 'Сортировка',
'expand' => 'Развернуть',
'collapse' => 'Свернуть',
'filter' => 'Фильтр',
'search' => 'Поиск',
'close' => 'Закрыть',
'show' => 'Показать',
'entries' => 'записей',
'captcha' => 'Защитный код',
'action' => 'Опции',
'title' => 'Название',
'description' => 'Описание',
'back' => 'Назад',
'back_to_list' => 'Вернуться к списку',
'submit' => 'Отправить',
'menu' => 'Меню',
'input' => 'Ввод',
'succeeded' => 'Завершена',
'failed' => 'Ошибка',
'delete_confirm' => 'Вы уверены, что хотите удалить эту запись?',
'delete_succeeded' => 'Успешно удалено!',
'delete_failed' => 'Ошибка при удалении!',
'update_succeeded' => 'Успешно изменено!',
'save_succeeded' => 'Успешно сохранено!',
'refresh_succeeded' => 'Успешно обновлено!',
'login_successful' => 'Авторизация успешна',
'choose' => 'Выбрать',
'choose_file' => 'Выбор файла',
'choose_image' => 'Выбор изображения',
'more' => 'Еще',
'deny' => 'Доступ запрещен',
'administrator' => 'Администратор',
'roles' => 'Роли',
'permissions' => 'Доступ',
'slug' => 'Слаг',
'created_at' => 'Дата создания',
'updated_at' => 'Дата обновления',
'alert' => 'Ошибка',
'parent_id' => 'Родитель',
'icon' => 'Иконка',
'uri' => 'URI',
'operation_log' => 'Журнал событий',
'parent_select_error' => 'Ошибка при выборе родителя',
'pagination' => [
'range' => 'Записи с :first по :last из :total',
],
'role' => 'Роль',
'permission' => 'Доступ',
'route' => 'Путь',
'confirm' => 'Подтвердить',
'cancel' => 'Отмена',
'http' => [
'method' => 'HTTP метод',
'path' => 'HTTP путь',
],
'all_methods_if_empty' => 'Все методы, если не указано',
'all' => 'Все',
'current_page' => 'Текущая страница',
'selected_rows' => 'Выбранные строки',
'upload' => 'Загрузить',
'new_folder' => 'Новая папка',
'time' => 'Время',
'size' => 'Размер',
'listbox' => [
'text_total' => 'Все: {0}',
'text_empty' => 'Пустой список',
'filtered' => '{0} / {1}',
'filter_clear' => 'Показать все',
'filter_placeholder' => 'Фильтр',
],
'grid_items_selected' => '{n} элементов выбрано',
'menu_titles' => [],
'prev' => 'Предыдущая',
'next' => 'Следующая',
'quick_create' => 'Быстрое добавление',
];
<?php
return [
'online' => 'Aktif',
'login' => 'Giriş',
'logout' => 'Çıkış',
'setting' => 'Ayarlar',
'name' => 'İsim',
'username' => 'Kullanıcı adı',
'password' => 'Parola',
'password_confirmation' => 'Parola tekrar',
'remember_me' => 'Beni hatırla',
'user_setting' => 'Kullanıcı ayarları',
'avatar' => 'Profil resmi',
'list' => 'Liste',
'new' => 'Yeni',
'create' => 'Oluştur',
'delete' => 'Sil',
'remove' => 'Kaldır',
'edit' => 'Düzenle',
'view' => 'Gör',
'detail' => 'Ayrıntılar',
'browse' => 'Gözat',
'reset' => 'Temizle',
'export' => 'Dışarı aktar',
'batch_delete' => 'Toplu sil',
'save' => 'Kaydet',
'refresh' => 'Yenile',
'order' => 'Sırala',
'expand' => 'Genişlet',
'collapse' => 'Daralt',
'filter' => 'Filtrele',
'search' => 'arama',
'close' => 'Kapat',
'show' => 'Göster',
'entries' => 'kayıtlar',
'captcha' => 'Doğrulama',
'action' => 'İşlem',
'title' => 'Başlık',
'description' => 'Açıklama',
'back' => 'Geri',
'back_to_list' => 'Listeye dön',
'submit' => 'Gönder',
'continue_editing' => 'Düzenlemeye devam et',
'continue_creating' => 'Oluşturmaya devam et',
'menu' => 'Menü',
'input' => 'Giriş',
'succeeded' => 'Başarılı',
'failed' => 'Hatalı',
'delete_confirm' => 'Silmek istediğinize emin misiniz?',
'delete_succeeded' => 'Silme başarılı!',
'delete_failed' => 'Silme hatalı!',
'update_succeeded' => 'Güncellemen başarılı!',
'save_succeeded' => 'Kaydetme başarılı!',
'refresh_succeeded' => 'Yenileme başarılı!',
'login_successful' => 'Giriş başarılı',
'choose' => 'Seçin',
'choose_file' => 'Dosya seçin',
'choose_image' => 'Resim seçin',
'more' => 'Daha',
'deny' => 'İzin yok',
'administrator' => 'Yönetici',
'roles' => 'Roller',
'permissions' => 'İzinler',
'slug' => 'Kalıcı link',
'created_at' => 'Oluşturulma tarihi',
'updated_at' => 'Güncellenme tarihi',
'alert' => 'Uyarı',
'parent_id' => 'Ebeveyn',
'icon' => 'İkon',
'uri' => 'URL',
'operation_log' => 'İşlem kayıtları',
'parent_select_error' => 'Üst hata',
'pagination' => [
'range' => ':total kayıt içinden :first den :last e kadar',
],
'role' => 'Rol',
'permission' => 'İzin',
'route' => 'Rota',
'confirm' => 'Onayla',
'cancel' => 'İptal',
'http' => [
'method' => 'HTTP metodu',
'path' => 'HTTP dizini',
],
'all_methods_if_empty' => 'Tüm metodlar boş ise',
'all' => 'Tümü',
'current_page' => 'Mevcut sayfa',
'selected_rows' => 'Seçilen kayıtlar',
'upload' => 'Yükle',
'new_folder' => 'Yeni dizin',
'time' => 'Zaman',
'size' => 'Boyut',
'listbox' => [
'text_total' => 'Toplam {0} kayıt',
'text_empty' => 'Boş liste',
'filtered' => '{0} / {1}',
'filter_clear' => 'Tümünü göster',
'filter_placeholder' => 'Filtrele',
],
'menu_titles' => [],
'grid_items_selected' => '{n} öğe seçildi',
'menu_titles' => [],
'prev' => 'Önceki',
'next' => 'Sonraki',
'quick_create' => 'Hemen oluştur',
];
<?php
return [
'online' => 'В мережі',
'login' => 'Увійти',
'logout' => 'Вийти',
'setting' => 'Налаштування',
'name' => 'Ім\'я',
'username' => 'Логін',
'password' => 'Пароль',
'password_confirmation' => 'Підтвердження пароля',
'remember_me' => 'Запам\'ятати',
'user_setting' => 'Налаштування користувача',
'avatar' => 'Аватар',
'list' => 'Список',
'new' => 'Додати',
'create' => 'Новий запис',
'delete' => 'Видалити',
'remove' => 'Видалити',
'edit' => 'Редагувати',
'view' => 'Переглянути',
'continue_editing' => 'Продовжити редагувати',
'continue_creating' => 'Продовжуйте створювати',
'detail' => 'Детально',
'browse' => 'Вибір файлу',
'reset' => 'Очистити',
'export' => 'Експорт',
'batch_delete' => 'Пакетне видалення',
'save' => 'Зберегти',
'refresh' => 'Оновити',
'order' => 'Сортування',
'expand' => 'Розгорнути',
'collapse' => 'Згорнути',
'filter' => 'Фільтр',
'search' => 'Пошук',
'close' => 'Закрити',
'show' => 'Показати',
'entries' => 'записи',
'captcha' => 'Захисний код',
'action' => 'Опції',
'title' => 'Назва',
'description' => 'Опис',
'back' => 'Назад',
'back_to_list' => 'Повернутися до списку',
'submit' => 'Створити',
'menu' => 'Меню',
'input' => 'Введення',
'succeeded' => 'Завершено',
'failed' => 'Помилка',
'delete_confirm' => 'Ви впевнені, що хочете видалити цей запис?',
'delete_succeeded' => 'Запис успішно видалено!',
'delete_failed' => 'Помилка при видаленні!',
'update_succeeded' => 'Запис успішно змінено!',
'save_succeeded' => 'Запис успішно створено!',
'refresh_succeeded' => 'Запис успішно оновлено!',
'login_successful' => 'Авторизація успішна',
'choose' => 'Вибрати',
'choose_file' => 'Вибір файлу',
'choose_image' => 'Вибір зображення',
'more' => 'Ще',
'deny' => 'Доступ заборонено',
'administrator' => 'Адміністратор',
'roles' => 'Ролі',
'permissions' => 'Доступ',
'slug' => 'Посилання',
'created_at' => 'Дата створення',
'updated_at' => 'Дата оновлення',
'alert' => 'Помилка',
'parent_id' => 'Батько',
'icon' => 'Іконка',
'uri' => 'URI',
'operation_log' => 'Журнал подій',
'parent_select_error' => 'Помилка при виборі батька',
'pagination' => [
'range' => 'Записи з :first по :last з :total',
],
'role' => 'Роль',
'permission' => 'Дозвіл',
'route' => 'Маршрут',
'confirm' => 'Підтвердити',
'cancel' => 'Скасувати',
'http' => [
'method' => 'HTTP метод',
'path' => 'шлях HTTP',
],
'all_methods_if_empty' => 'Усі методи, якщо це порожнє',
'all' => 'Усі',
'current_page' => 'Поточна сторінка',
'selected_rows' => 'Вибрані рядки',
'upload' => 'Завантажити',
'new_folder' => 'Нова папка',
'time' => 'Час',
'size' => 'Розмір',
'listbox' => [
'text_total' => 'Показано всі {0}',
'text_empty' => 'Пустий список',
'filtered' => '{0} / {1}',
'filter_clear' => 'Показати все',
'filter_placeholder'=> 'Фільтр',
],
'grid_items_selected' => '{n} елементів вибрано',
'menu_titles' => [],
'prev' => 'Попередня',
'next' => 'Наступна',
];
<?php
return [
'online' => 'جڑا ہوا۔',
'login' => 'لاگ ان کریں۔',
'logout' => 'سائن آؤٹ',
'setting' => 'ترتیبات۔',
'name' => 'نام۔',
'username' => 'صارف کا نام',
'password' => 'پاس ورڈ',
'password_confirmation' => 'پاسورڈ کی تو ثیق',
'remember_me' => 'مجھے پہچانتے ہو',
'user_setting' => 'صارف کی ترتیب۔',
'avatar' => 'اوتار۔',
'list' => 'فہرست۔',
'new' => 'نئی',
'create' => 'بنانا',
'delete' => 'حذف کریں۔',
'remove' => 'دور',
'edit' => 'ترمیم',
'view' => 'دیکھیں',
'continue_editing' => 'ترمیم جاری رکھیں۔',
'continue_creating' => 'بنانا جاری رکھیں۔',
'detail' => 'تفصیل',
'browse' => 'براؤز کریں۔',
'reset' => 'ری سیٹ کریں۔',
'export' => 'برآمد کریں۔',
'batch_delete' => 'بیچ ڈیلیٹ۔',
'save' => 'محفوظ کریں',
'refresh' => 'ریفریش',
'order' => 'ترتیب',
'expand' => 'پھیلائیں۔',
'collapse' => 'گرنے',
'filter' => 'فلٹر',
'search' => 'تلاش کریں۔',
'close' => 'بند کریں',
'show' => 'دکھائیں۔',
'entries' => 'اندراجات',
'captcha' => 'کیپچا۔',
'action' => 'عمل',
'title' => 'عنوان',
'description' => 'تفصیل',
'back' => 'پیچھے',
'back_to_list' => 'فہرست پر واپس جائیں۔',
'submit' => 'جمع کرائیں',
'menu' => 'مینو',
'input' => 'ان پٹ۔',
'succeeded' => 'کامیاب ہوا۔',
'failed' => 'ناکام ہوگیا۔',
'delete_confirm' => 'کیا آپ واقعی اس آئٹم کو حذف کرنا چاہتے ہیں؟',
'delete_succeeded' => 'حذف کرنے میں کامیاب!',
'delete_failed' => 'حذف کرنے میں ناکام!',
'update_succeeded' => 'اپ ڈیٹ کامیاب!',
'save_succeeded' => 'محفوظ کریں کامیاب!',
'refresh_succeeded' => 'ریفریش کامیاب!',
'login_successful' => 'لاگ ان کامیاب۔',
'choose' => 'منتخب کریں۔',
'choose_file' => 'فائل منتخب کریں۔',
'choose_image' => 'تصویر منتخب کریں۔',
'more' => 'مزید',
'deny' => 'اجازت نہیں دی گئی',
'administrator' => 'ایڈمنسٹریٹر۔',
'roles' => 'کردار۔',
'permissions' => 'اجازت',
'slug' => 'سلگ۔',
'created_at' => 'ایٹ تیار کیا گیا',
'updated_at' => 'تازہ کاری شدہ',
'alert' => 'انتباہ',
'parent_id' => 'والدین',
'icon' => 'شبیہہ۔',
'uri' => 'URI',
'operation_log' => 'آپریشن لاگ',
'parent_select_error' => 'بنیادی انتخاب غلطی',
'pagination' => [
'range' => 'دکھا رہا ہے۔ :first کرنے کے لئے :last کے :total اندراجات',
],
'role' => 'کردار۔',
'permission' => 'اجازت۔',
'route' => 'راسته',
'confirm' => 'تصدیق کریں۔',
'cancel' => 'منسوخ کریں',
'http' => [
'method' => 'HTTP method',
'path' => 'HTTP path',
],
'all_methods_if_empty' => 'اگر تمام خالی ہیں تو',
'all' => 'سب',
'current_page' => 'موجودہ صفحہ',
'selected_rows' => 'قطاریں منتخب کی گئیں۔',
'upload' => 'اپ لوڈ کریں۔',
'new_folder' => 'نیا فولڈر',
'time' => 'وقت',
'size' => 'سائز',
'listbox' => [
'text_total' => 'سب دکھا رہا ہے۔ {0}',
'text_empty' => 'خالی فہرست۔',
'filtered' => '{0} / {1}',
'filter_clear' => 'سارے دکھاو',
'filter_placeholder' => 'فلٹر',
],
'grid_items_selected' => '{n} آئٹمز منتخب',
'menu_titles' => [],
'prev' => 'پچھلا',
'next' => 'اگلے',
'quick_create' => 'فوری تخلیق کریں۔',
];
<?php
return [
'online' => '在线',
'login' => '登录',
'logout' => '登出',
'setting' => '设置',
'name' => '名称',
'username' => '用户名',
'password' => '密码',
'password_confirmation' => '确认密码',
'remember_me' => '记住我',
'user_setting' => '用户设置',
'avatar' => '头像',
'list' => '列表',
'new' => '新增',
'create' => '创建',
'delete' => '删除',
'remove' => '移除',
'edit' => '编辑',
'continue_editing' => '继续编辑',
'continue_creating' => '继续创建',
'view' => '查看',
'detail' => '详细',
'browse' => '浏览',
'reset' => '重置',
'export' => '导出',
'batch_delete' => '批量删除',
'save' => '保存',
'refresh' => '刷新',
'order' => '排序',
'expand' => '展开',
'collapse' => '收起',
'filter' => '筛选',
'search' => '搜索',
'close' => '关闭',
'show' => '显示',
'entries' => '条',
'captcha' => '验证码',
'action' => '操作',
'title' => '标题',
'description' => '简介',
'back' => '返回',
'back_to_list' => '返回列表',
'submit' => '提交',
'menu' => '菜单',
'input' => '输入',
'succeeded' => '成功',
'failed' => '失败',
'delete_confirm' => '确认删除?',
'delete_succeeded' => '删除成功 !',
'delete_failed' => '删除失败 !',
'update_succeeded' => '更新成功 !',
'save_succeeded' => '保存成功 !',
'refresh_succeeded' => '刷新成功 !',
'login_successful' => '登录成功 !',
'choose' => '选择',
'choose_file' => '选择文件',
'choose_image' => '选择图片',
'more' => '更多',
'deny' => '无权访问',
'administrator' => '管理员',
'roles' => '角色',
'permissions' => '权限',
'slug' => '标识',
'created_at' => '创建时间',
'updated_at' => '更新时间',
'alert' => '注意',
'parent_id' => '父级菜单',
'icon' => '图标',
'uri' => '路径',
'operation_log' => '操作日志',
'parent_select_error' => '父级选择错误',
'pagination' => [
'range' => '从 :first 到 :last ,总共 :total 条',
],
'role' => '角色',
'permission' => '权限',
'route' => '路由',
'confirm' => '确认',
'cancel' => '取消',
'http' => [
'method' => 'HTTP方法',
'path' => 'HTTP路径',
],
'all_methods_if_empty' => '为空默认为所有方法',
'all' => '全部',
'current_page' => '当前页',
'selected_rows' => '选择的行',
'upload' => '上传',
'new_folder' => '新建文件夹',
'time' => '时间',
'size' => '大小',
'listbox' => [
'text_total' => '总共 {0} 项',
'text_empty' => '空列表',
'filtered' => '{0} / {1}',
'filter_clear' => '显示全部',
'filter_placeholder' => '过滤',
],
'grid_items_selected' => '已选择 {n} 项',
'menu_titles' => [],
'prev' => '上一步',
'next' => '下一步',
'quick_create' => '快速创建',
];
<?php
return [
'online' => '在線',
'login' => '登錄',
'logout' => '登出',
'setting' => '設置',
'name' => '名稱',
'username' => '用戶名',
'password' => '密碼',
'password_confirmation' => '確認密碼',
'remember_me' => '記住我',
'user_setting' => '用戶設置',
'avatar' => '頭像',
'list' => '列表',
'new' => '新增',
'create' => '創建',
'delete' => '刪除',
'remove' => '移除',
'edit' => '編輯',
'view' => '查看',
'continue_editing' => '繼續編輯',
'continue_creating' => '繼續創建',
'detail' => '詳細',
'browse' => '瀏覽',
'reset' => '重置',
'export' => '匯出',
'batch_delete' => '批次刪除',
'save' => '儲存',
'refresh' => '重新整理',
'order' => '排序',
'expand' => '展開',
'collapse' => '收起',
'filter' => '篩選',
'search' => '搜索',
'close' => '關閉',
'show' => '顯示',
'entries' => '條',
'captcha' => '驗證碼',
'action' => '操作',
'title' => '標題',
'description' => '簡介',
'back' => '返回',
'back_to_list' => '返回列表',
'submit' => '送出',
'menu' => '目錄',
'input' => '輸入',
'succeeded' => '成功',
'failed' => '失敗',
'delete_confirm' => '確認刪除?',
'delete_succeeded' => '刪除成功!',
'delete_failed' => '刪除失敗!',
'update_succeeded' => '更新成功!',
'save_succeeded' => '儲存成功!',
'refresh_succeeded' => '成功重新整理!',
'login_successful' => '成功登入!',
'choose' => '選擇',
'choose_file' => '選擇檔案',
'choose_image' => '選擇圖片',
'more' => '更多',
'deny' => '權限不足',
'administrator' => '管理員',
'roles' => '角色',
'permissions' => '權限',
'slug' => '標誌',
'created_at' => '建立時間',
'updated_at' => '更新時間',
'alert' => '警告',
'parent_id' => '父目錄',
'icon' => '圖示',
'uri' => '路徑',
'operation_log' => '操作記錄',
'parent_select_error' => '父級選擇錯誤',
'pagination' => [
'range' => '從 :first 到 :last ,總共 :total 條',
],
'role' => '角色',
'permission' => '權限',
'route' => '路由',
'confirm' => '確認',
'cancel' => '取消',
'http' => [
'method' => 'HTTP方法',
'path' => 'HTTP路徑',
],
'all_methods_if_empty' => '為空默認為所有方法',
'all' => '全部',
'current_page' => '現在頁面',
'selected_rows' => '選擇的行',
'upload' => '上傳',
'new_folder' => '新建資料夾',
'time' => '時間',
'size' => '大小',
'listbox' => [
'text_total' => '總共 {0} 項',
'text_empty' => '空列表',
'filtered' => '{0} / {1}',
'filter_clear' => '顯示全部',
'filter_placeholder' => '過濾',
],
'menu_titles' => [],
'prev' => '上一步',
'next' => '下一步',
'quick_create' => '快速創建',
];
{
"Admin": true
}
\ No newline at end of file
......@@ -13,7 +13,3 @@ use Illuminate\Support\Facades\Route;
| be assigned to the "api" middleware group. Make something great!
|
*/
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
......@@ -11,8 +11,4 @@ use Illuminate\Support\Facades\Route;
| routes are loaded by the RouteServiceProvider and all of them will
| be assigned to the "web" middleware group. Make something great!
|
*/
Route::get('/', function () {
return view('welcome');
});
*/
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment