Skip to content

Commit 104aa18

Browse files
committed
fix(auth): make phone optional, fix backend syntax error, and improve button contrast on dark mode
1 parent f1f462a commit 104aa18

3 files changed

Lines changed: 52 additions & 46 deletions

File tree

Backend/src/controllers/authController.js

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@ export const register = async (req, res) => {
77
try {
88
const { name, email, password, phone } = req.body;
99

10-
if (!name || !email || !password || !phone) {
11-
return res.status(400).json({ error: "All fields are required" });
10+
if (!name || !email || !password) {
11+
return res
12+
.status(400)
13+
.json({ error: "Name, email and password are required" });
1214
}
1315

1416
const normalizedEmail = email.trim().toLowerCase();
@@ -27,7 +29,7 @@ export const register = async (req, res) => {
2729

2830
const [result] = await db.query(
2931
"INSERT INTO clients (name, email, password, phone) VALUES (?, ?, ?, ?)",
30-
[name.trim(), normalizedEmail, hashedPassword, phone.trim()],
32+
[name.trim(), normalizedEmail, hashedPassword, phone ? phone.trim() : ""],
3133
);
3234

3335
res.json({ message: "Client added securely!", clientId: result.insertId });
@@ -80,15 +82,10 @@ export const login = async (req, res) => {
8082
export const getAllClients = async (req, res) => {
8183
try {
8284
const [results] = await db.query(
83-
`SELECT id, name, email, phone, username, bio, avatar, theme,
84-
background_type, background_value,
85-
youtubeId, githubUser, telegramUser, instagram, twitter, linkedin, tiktok
86-
FROM clients`,
85+
"SELECT id, name, email, phone, username, bio, avatar, theme, background_type, background_value, youtubeId, githubUser, telegramUser, instagram, twitter, linkedin, tiktok FROM clients",
8786
);
8887
res.json(results);
8988
} catch (err) {
9089
res.status(500).json({ error: err.message });
9190
}
9291
};
93-
94-
// exports = { register, login, getAllClients };

link-sharing-frontend/src/Components/Login.jsx

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,9 @@ const Login = () => {
5151
<div className="app-auth-shell min-h-screen px-4 py-12 relative overflow-hidden bg-[var(--saas-bg-main)]">
5252
{/* Cinematic Background Elements */}
5353
<div className="absolute inset-0 z-0">
54-
<div className="absolute top-[-10%] left-[-10%] w-[40%] h-[40%] bg-[var(--saas-accent-primary)] opacity-10 blur-[120px] rounded-full" />
55-
<div className="absolute bottom-[-10%] right-[-10%] w-[40%] h-[40%] bg-purple-600/10 blur-[120px] rounded-full" />
56-
<div className="absolute inset-0 bg-[linear-gradient(rgba(255,255,255,0.01)_1px,transparent_1px),linear-gradient(90deg,rgba(255,255,255,0.01)_1px,transparent_1px)] bg-[size:40px_40px] [mask-image:radial-gradient(ellipse_at_center,black,transparent_80%)]" />
54+
<div className="absolute top-[-10%] left-[-10%] w-[40%] h-[40%] bg-[var(--saas-accent-primary)] opacity-10 blur-[120px] rounded-full" />
55+
<div className="absolute bottom-[-10%] right-[-10%] w-[40%] h-[40%] bg-purple-600/10 blur-[120px] rounded-full" />
56+
<div className="absolute inset-0 bg-[linear-gradient(rgba(255,255,255,0.01)_1px,transparent_1px),linear-gradient(90deg,rgba(255,255,255,0.01)_1px,transparent_1px)] bg-[size:40px_40px] [mask-image:radial-gradient(ellipse_at_center,black,transparent_80%)]" />
5757
</div>
5858

5959
<MotionDiv
@@ -64,7 +64,7 @@ const Login = () => {
6464
>
6565
<div className="flex flex-col items-center mb-10">
6666
<Link to="/" className="flex items-center gap-3 group">
67-
<div className="flex h-12 w-12 items-center justify-center rounded-[1.25rem] bg-[var(--saas-accent-gradient)] font-black text-white text-xl shadow-[0_0_30px_var(--saas-accent-glow)] group-hover:scale-105 transition-transform">
67+
<div className="flex h-12 w-12 items-center justify-center rounded-[1.25rem] bg-[image:var(--saas-accent-gradient)] font-black text-[var(--saas-bg-main)] text-xl shadow-[0_0_30px_var(--saas-accent-glow)] group-hover:scale-105 transition-transform">
6868
LH
6969
</div>
7070
</Link>
@@ -77,16 +77,16 @@ const Login = () => {
7777
</div>
7878

7979
<div className="app-auth-panel rounded-[2.5rem] p-8 md:p-10 border border-[var(--saas-border)] bg-[var(--saas-bg-surface)] shadow-2xl backdrop-blur-3xl overflow-hidden relative">
80-
<div className="absolute top-0 inset-x-0 h-px bg-gradient-to-r from-transparent via-white/10 to-transparent" />
81-
80+
<div className="absolute top-0 inset-x-0 h-px bg-gradient-to-r from-transparent via-white/10 to-transparent" />
81+
8282
<form onSubmit={handleSubmit} className="space-y-6">
8383
<div>
8484
<label className="block text-[11px] font-black uppercase tracking-[0.2em] text-[var(--saas-text-secondary)] mb-2.5 px-1">
8585
Identity Profile
8686
</label>
8787
<div className="relative group">
8888
<div className="absolute inset-y-0 left-4 flex items-center pointer-events-none text-[var(--saas-text-secondary)] group-focus-within:text-[var(--saas-accent-primary)] transition-colors">
89-
<Mail className="w-4.5 h-4.5" />
89+
<Mail className="w-4.5 h-4.5" />
9090
</div>
9191
<input
9292
type="email"
@@ -105,7 +105,7 @@ const Login = () => {
105105
</label>
106106
<div className="relative group">
107107
<div className="absolute inset-y-0 left-4 flex items-center pointer-events-none text-[var(--saas-text-secondary)] group-focus-within:text-[var(--saas-accent-primary)] transition-colors">
108-
<Lock className="w-4.5 h-4.5" />
108+
<Lock className="w-4.5 h-4.5" />
109109
</div>
110110
<input
111111
type={showPassword ? "text" : "password"}
@@ -130,7 +130,11 @@ const Login = () => {
130130
</div>
131131

132132
<div className="flex justify-end px-1">
133-
<Link to="/forgot-password" title="Standard recovery flow" className="text-[11px] font-black uppercase tracking-widest text-[var(--saas-accent-primary)] hover:underline">
133+
<Link
134+
to="/forgot-password"
135+
title="Standard recovery flow"
136+
className="text-[11px] font-black uppercase tracking-widest text-[var(--saas-accent-primary)] hover:underline"
137+
>
134138
Recovery Needed?
135139
</Link>
136140
</div>
@@ -140,10 +144,10 @@ const Login = () => {
140144
disabled={loading}
141145
whileHover={{ scale: 1.01 }}
142146
whileTap={{ scale: 0.99 }}
143-
className="w-full flex items-center justify-center gap-2 rounded-2xl py-4 text-sm font-black uppercase tracking-widest text-black bg-[var(--saas-accent-gradient)] shadow-lg shadow-[var(--saas-accent-glow)] hover:brightness-110 transition-all disabled:opacity-50"
147+
className="w-full flex items-center justify-center gap-2 rounded-2xl py-4 text-sm font-black uppercase tracking-widest text-[var(--saas-bg-main)] bg-[image:var(--saas-accent-gradient)] shadow-lg shadow-[var(--saas-accent-glow)] hover:brightness-110 transition-all disabled:opacity-50"
144148
>
145149
{loading ? (
146-
<div className="w-5 h-5 border-2 border-black/30 border-t-black rounded-full animate-spin" />
150+
<div className="w-5 h-5 border-2 border-[var(--saas-bg-main)]/30 border-t-[var(--saas-bg-main)] rounded-full animate-spin" />
147151
) : (
148152
<>
149153
Establish Access
@@ -154,12 +158,15 @@ const Login = () => {
154158
</form>
155159

156160
<div className="mt-8 pt-8 border-t border-[var(--saas-border)]">
157-
<p className="text-center text-[var(--saas-text-secondary)] text-sm font-medium">
158-
New to the platform?{" "}
159-
<Link to="/register" className="text-[var(--saas-accent-primary)] font-black hover:underline ml-1">
160-
Create Identity
161-
</Link>
162-
</p>
161+
<p className="text-center text-[var(--saas-text-secondary)] text-sm font-medium">
162+
New to the platform?{" "}
163+
<Link
164+
to="/register"
165+
className="text-[var(--saas-accent-primary)] font-black hover:underline ml-1"
166+
>
167+
Create Identity
168+
</Link>
169+
</p>
163170
</div>
164171
</div>
165172
</MotionDiv>

link-sharing-frontend/src/Components/Register.jsx

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ const Register = () => {
4343
<div className="app-auth-shell min-h-screen px-4 py-12 relative overflow-hidden bg-[var(--saas-bg-main)]">
4444
{/* Cinematic Background Elements */}
4545
<div className="absolute inset-0 z-0">
46-
<div className="absolute top-[-10%] right-[-10%] w-[40%] h-[40%] bg-[var(--saas-accent-primary)] opacity-10 blur-[120px] rounded-full" />
47-
<div className="absolute bottom-[-10%] left-[-10%] w-[40%] h-[40%] bg-purple-600/10 blur-[120px] rounded-full" />
48-
<div className="absolute inset-0 bg-[linear-gradient(rgba(255,255,255,0.01)_1px,transparent_1px),linear-gradient(90deg,rgba(255,255,255,0.01)_1px,transparent_1px)] bg-[size:40px_40px] [mask-image:radial-gradient(ellipse_at_center,black,transparent_80%)]" />
46+
<div className="absolute top-[-10%] right-[-10%] w-[40%] h-[40%] bg-[var(--saas-accent-primary)] opacity-10 blur-[120px] rounded-full" />
47+
<div className="absolute bottom-[-10%] left-[-10%] w-[40%] h-[40%] bg-purple-600/10 blur-[120px] rounded-full" />
48+
<div className="absolute inset-0 bg-[linear-gradient(rgba(255,255,255,0.01)_1px,transparent_1px),linear-gradient(90deg,rgba(255,255,255,0.01)_1px,transparent_1px)] bg-[size:40px_40px] [mask-image:radial-gradient(ellipse_at_center,black,transparent_80%)]" />
4949
</div>
5050

5151
<MotionDiv
@@ -56,7 +56,7 @@ const Register = () => {
5656
>
5757
<div className="flex flex-col items-center mb-10">
5858
<Link to="/" className="flex items-center gap-3 group">
59-
<div className="flex h-12 w-12 items-center justify-center rounded-[1.25rem] bg-[var(--saas-accent-gradient)] font-black text-white text-xl shadow-[0_0_30px_var(--saas-accent-glow)] group-hover:scale-105 transition-transform">
59+
<div className="flex h-12 w-12 items-center justify-center rounded-[1.25rem] bg-[image:var(--saas-accent-gradient)] font-black text-[var(--saas-bg-main)] text-xl shadow-[0_0_30px_var(--saas-accent-glow)] group-hover:scale-105 transition-transform">
6060
LH
6161
</div>
6262
</Link>
@@ -69,8 +69,8 @@ const Register = () => {
6969
</div>
7070

7171
<div className="app-auth-panel rounded-[2.5rem] p-8 md:p-10 border border-[var(--saas-border)] bg-[var(--saas-bg-surface)] shadow-2xl backdrop-blur-3xl overflow-hidden relative">
72-
<div className="absolute top-0 inset-x-0 h-px bg-gradient-to-r from-transparent via-white/10 to-transparent" />
73-
72+
<div className="absolute top-0 inset-x-0 h-px bg-gradient-to-r from-transparent via-white/10 to-transparent" />
73+
7474
<form onSubmit={handleSubmit} className="space-y-5">
7575
<div className="grid grid-cols-1 gap-5 sm:grid-cols-2">
7676
<div className="col-span-2 sm:col-span-1">
@@ -79,7 +79,7 @@ const Register = () => {
7979
</label>
8080
<div className="relative group">
8181
<div className="absolute inset-y-0 left-4 flex items-center pointer-events-none text-[var(--saas-text-secondary)] group-focus-within:text-[var(--saas-accent-primary)] transition-colors">
82-
<User className="w-4 h-4" />
82+
<User className="w-4 h-4" />
8383
</div>
8484
<input
8585
type="text"
@@ -98,14 +98,13 @@ const Register = () => {
9898
</label>
9999
<div className="relative group">
100100
<div className="absolute inset-y-0 left-4 flex items-center pointer-events-none text-[var(--saas-text-secondary)] group-focus-within:text-[var(--saas-accent-primary)] transition-colors">
101-
<Phone className="w-4 h-4" />
101+
<Phone className="w-4 h-4" />
102102
</div>
103103
<input
104104
type="tel"
105105
value={form.phone}
106106
onChange={(e) => updateField("phone", e.target.value)}
107-
placeholder="Contact"
108-
required
107+
placeholder="Contact (Optional)"
109108
className="w-full bg-[var(--saas-bg-elevated)] border border-[var(--saas-border)] focus:border-[var(--saas-accent-primary)] focus:ring-4 focus:ring-[var(--saas-accent-glow)]/10 rounded-2xl py-3.5 pl-11 pr-4 text-sm font-semibold text-[var(--saas-text-primary)] transition-all outline-none placeholder:text-[var(--saas-text-secondary)]/30"
110109
/>
111110
</div>
@@ -118,7 +117,7 @@ const Register = () => {
118117
</label>
119118
<div className="relative group">
120119
<div className="absolute inset-y-0 left-4 flex items-center pointer-events-none text-[var(--saas-text-secondary)] group-focus-within:text-[var(--saas-accent-primary)] transition-colors">
121-
<Mail className="w-4.5 h-4.5" />
120+
<Mail className="w-4.5 h-4.5" />
122121
</div>
123122
<input
124123
type="email"
@@ -137,7 +136,7 @@ const Register = () => {
137136
</label>
138137
<div className="relative group">
139138
<div className="absolute inset-y-0 left-4 flex items-center pointer-events-none text-[var(--saas-text-secondary)] group-focus-within:text-[var(--saas-accent-primary)] transition-colors">
140-
<Lock className="w-4.5 h-4.5" />
139+
<Lock className="w-4.5 h-4.5" />
141140
</div>
142141
<input
143142
type={showPassword ? "text" : "password"}
@@ -167,10 +166,10 @@ const Register = () => {
167166
disabled={loading}
168167
whileHover={{ scale: 1.01 }}
169168
whileTap={{ scale: 0.99 }}
170-
className="w-full flex items-center justify-center gap-2 rounded-2xl py-4 text-sm font-black uppercase tracking-widest text-black bg-[var(--saas-accent-gradient)] shadow-lg shadow-[var(--saas-accent-glow)] hover:brightness-110 transition-all disabled:opacity-50"
169+
className="w-full flex items-center justify-center gap-2 rounded-2xl py-4 text-sm font-black uppercase tracking-widest text-[var(--saas-bg-main)] bg-[image:var(--saas-accent-gradient)] shadow-lg shadow-[var(--saas-accent-glow)] hover:brightness-110 transition-all disabled:opacity-50"
171170
>
172171
{loading ? (
173-
<div className="w-5 h-5 border-2 border-black/30 border-t-black rounded-full animate-spin" />
172+
<div className="w-5 h-5 border-2 border-[var(--saas-bg-main)]/30 border-t-[var(--saas-bg-main)] rounded-full animate-spin" />
174173
) : (
175174
<>
176175
Register Identity
@@ -181,12 +180,15 @@ const Register = () => {
181180
</form>
182181

183182
<div className="mt-8 pt-8 border-t border-[var(--saas-border)]">
184-
<p className="text-center text-[var(--saas-text-secondary)] text-sm font-medium">
185-
Already part of the ecosystem?{" "}
186-
<Link to="/login" className="text-[var(--saas-accent-primary)] font-black hover:underline ml-1">
187-
Established Access
188-
</Link>
189-
</p>
183+
<p className="text-center text-[var(--saas-text-secondary)] text-sm font-medium">
184+
Already part of the ecosystem?{" "}
185+
<Link
186+
to="/login"
187+
className="text-[var(--saas-accent-primary)] font-black hover:underline ml-1"
188+
>
189+
Established Access
190+
</Link>
191+
</p>
190192
</div>
191193
</div>
192194
</MotionDiv>

0 commit comments

Comments
 (0)