Randy_Johnson started a new conversation+100 XP
1w ago
When starting the laravel app creation, I went for PEST, but now I realise I don't actually like it and prefer the look of PHPUnit. I've noticed that pest comes with a lot of preloaded scripts to test for specific functionality, my guess in that the same kind of script come with PHPUnit. Is there a script I can run to remove Pest and go with Unit?
Randy_Johnson wrote a reply+100 XP
1w ago
Randy_Johnson wrote a reply+100 XP
1w ago
Randy_Johnson wrote a reply+100 XP
1w ago
Randy_Johnson wrote a reply+100 XP
1w ago
So confused. Not sure what to do.
https://laravel.com/docs/13.x/contributions
To encourage active collaboration, Laravel strongly encourages pull requests, not just bug reports.
https://github.com/laravel/react-starter-kit/compare/main...JoshuaHeathcote1987:patch-1?expand=1
An owner of this repository has disabled the ability to open pull requests.
Randy_Johnson wrote a reply+100 XP
1w ago
Randy_Johnson wrote a reply+100 XP
1w ago
Randy_Johnson liked a comment+100 XP
1w ago
Good catch. This looks like a scaffolding bug in the starter kit where it missed pulling the TooltipProvider from the upstream shadcn/ui sidebar component.
Your fix is spot on. For anyone else finding this thread, just manually patch your resources/js/components/ui/sidebar.tsx:
Ensure the imports are there at the top:
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip"
Wrap the main div inside your SidebarContext.Provider:
return (
<SidebarContext.Provider value={contextValue}>
<TooltipProvider delayDuration={0}>
<div
data-slot="sidebar-wrapper"
style={
{
"--sidebar-width": SIDEBAR_WIDTH,
"--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
...style,
} as React.CSSProperties
}
className={cn(
"group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full",
className
)}
{...props}
>
{children}
</div>
</TooltipProvider>
</SidebarContext.Provider>
)
}
If you have a spare few minutes, it's worth opening a quick PR or issue on the Laravel Breeze/Jetstream GitHub repo (depending on which you used to scaffold) so the team can patch the stubs for everyone else.
Randy_Johnson started a new conversation+100 XP
1w ago
Laravel, the tool tip provider is missing from sidebar.tsx.
Relative path
resources\js\components\ui\sidebar.tsx
Bit missing
<TooltipProvider delayDuration={0}>
How the code looked on older version
import {
Tooltip,
TooltipContent,
TooltipProvider,
TooltipTrigger,
} from "@/components/ui/tooltip"
return (
<SidebarContext.Provider value={contextValue}>
<TooltipProvider delayDuration={0}>
<div
data-slot="sidebar-wrapper"
style={
{
"--sidebar-width": SIDEBAR_WIDTH,
"--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
...style,
} as React.CSSProperties
}
className={cn(
"group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full",
className
)}
{...props}
>
{children}
</div>
</TooltipProvider>
</SidebarContext.Provider>
)
}
Randy_Johnson wrote a reply+100 XP
1w ago
Randy_Johnson wrote a reply+100 XP
1w ago
Randy_Johnson wrote a reply+100 XP
1w ago
I'm using Inertia React and it looks like this
import { Form, Head } from '@inertiajs/react';
import InputError from '@/components/input-error';
import PasswordInput from '@/components/password-input';
import TextLink from '@/components/text-link';
import { Button } from '@/components/ui/button';
import { Checkbox } from '@/components/ui/checkbox';
import { Input } from '@/components/ui/input';
import { Label } from '@/components/ui/label';
import { Spinner } from '@/components/ui/spinner';
import { register } from '@/routes';
import { store } from '@/routes/login';
import { request } from '@/routes/password';
type Props = {
status?: string;
canResetPassword: boolean;
canRegister: boolean;
};
export default function Login({
status,
canResetPassword,
canRegister,
}: Props) {
return (
<>
<Head title="Log in" />
<Form
{...store.form()}
resetOnSuccess={['password']}
className="flex flex-col gap-6"
>
{({ processing, errors }) => (
<>
<div className="grid gap-6">
<div className="grid gap-2">
<Label htmlFor="email">Email address</Label>
<Input
id="email"
type="email"
name="email"
required
autoFocus
tabIndex={1}
autoComplete="email"
placeholder="[email protected]"
/>
<InputError message={errors.email} />
</div>
<div className="grid gap-2">
<div className="flex items-center">
<Label htmlFor="password">Password</Label>
{canResetPassword && (
<TextLink
href={request()}
className="ml-auto text-sm"
tabIndex={5}
>
Forgot password?
</TextLink>
)}
</div>
<PasswordInput
id="password"
name="password"
required
tabIndex={2}
autoComplete="current-password"
placeholder="Password"
/>
<InputError message={errors.password} />
</div>
<div className="flex items-center space-x-3">
<Checkbox
id="remember"
name="remember"
tabIndex={3}
/>
<Label htmlFor="remember">Remember me</Label>
</div>
<Button
type="submit"
className="mt-4 w-full"
tabIndex={4}
disabled={processing}
data-test="login-button"
>
{processing && <Spinner />}
Log in
</Button>
</div>
{canRegister && (
<div className="text-center text-sm text-muted-foreground">
Don't have an account?{' '}
<TextLink href={register()} tabIndex={5}>
Sign up
</TextLink>
</div>
)}
</>
)}
</Form>
{status && (
<div className="mb-4 text-center text-sm font-medium text-green-600">
{status}
</div>
)}
</>
);
}
Login.layout = {
title: 'Log in to your account',
description: 'Enter your email and password below to log in',
};
Randy_Johnson started a new conversation+100 XP
1w ago
Randy_Johnson wrote a reply+100 XP
2w ago
Randy_Johnson wrote a reply+100 XP
3w ago
Randy_Johnson wrote a reply+100 XP
3w ago
Randy_Johnson liked a comment+100 XP
3w ago
Randy_Johnson wrote a reply+100 XP
3w ago
Randy_Johnson liked a comment+100 XP
3w ago
Randy_Johnson wrote a reply+100 XP
3w ago
Randy_Johnson started a new conversation+100 XP
3w ago
Randy_Johnson wrote a reply+100 XP
3w ago
Randy_Johnson liked a comment+100 XP
3w ago
If you are using inertia, it seems like a good time to switch to the new http request helper in v3. https://inertiajs.com/docs/v3/the-basics/http-requests
Randy_Johnson liked a comment+100 XP
3w ago
Randy_Johnson liked a comment+100 XP
3w ago
I download the actual code no library:
That IS the library. It can have malware whether you install it via npm or manually.
In this case, attackers included a package install script to install the RAT. A direct download couldn't do that, but it could contain other malicious code.
Npm has an automatic audit for vulnerable versions, unlike direct downloads.
But how much damage was done, other servers could have been hit as well. Depending on how the malware was written.
That wasn't what I meant. This is a serious attack. My point was that there's nothing to wait for because the compromised versions were removed over 24 hours ago.
I have never even used NPM.
Ok, but the rest of the industry does. And you still use other package managers, such as Composer and, presumably, some Linux package manager. Those have suffered supply chain attacks just like this.
While these attacks are a nasty, in the real world you can't get away with a zero trust approach. You're relying on many layers of software just to run a web app. It takes vigilance.
Randy_Johnson wrote a reply+100 XP
3w ago
Randy_Johnson started a new conversation+100 XP
3w ago
Randy_Johnson liked a comment+100 XP
1mo ago
Randy_Johnson liked a comment+100 XP
1mo ago
Randy_Johnson liked a comment+100 XP
1mo ago
Randy_Johnson liked a comment+100 XP
2mos ago
This is what I do.
- Write code to a make a feature work.
- Refactor/ clean up the code of said feature.
- Start with the next feature and repeat.
If you push on and finish the product, it is likely that you never clean up the code.
So I'd say C. clean up some code, write a feature, clean up some more code until you are done. Make small improvements of the code in iterations, don't try to clean it up all at once, it will likely be overwhelming.
Randy_Johnson started a new conversation+100 XP
2mos ago
Randy_Johnson liked a comment+100 XP
2mos ago
Randy_Johnson liked a comment+100 XP
2mos ago
Randy_Johnson wrote a reply+100 XP
2mos ago
Randy_Johnson wrote a reply+100 XP
2mos ago
The link on my front page which is to /education/login-portal
There is an issue where I am trying to add a school login page which isn't that of Laravel login. When having the route in the package education web.php it gets pushed to Laravel login but having it in the root web.php it works.
If continuing to log in, it then displays the page, so I am guessing there is some gate somewhere. I am using the standard laravel login which is installed in the creating of the app.
Randy_Johnson wrote a reply+100 XP
2mos ago
Randy_Johnson started a new conversation+100 XP
2mos ago
Hi, I created a login in portal so that the user is given the choice to login as admin (will probably hide this later) , student, etc. but when I click the link it just redirects me to the login page. But there is absolutely no reason for it to do so.
<?php
use Illuminate\Support\Facades\Route;
use Inertia\Inertia;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;
use Education\App\Models\School;
use Education\App\Models\Building;
use Education\App\Models\Classroom;
use Education\App\Models\Expense;
use Education\App\Models\Message;
use Education\App\Models\Fee;
use Education\App\Models\Teacher;
use Education\App\Models\Subject;
use Education\App\Models\Student;
use Education\App\Models\Form;
use Education\App\Models\Thread;
use Education\App\Models\SchoolFinance;
Route::get('/login', function () {
return Inertia::render('Auth/Login');
})->name('login');
Route::get('/education/portal', function () {
return Inertia::render('education/login-portal');
});
PS. I had a problem posting this as well, I selected Laravel and it said recapta failed - or something along them lines.