82 lines
2.1 KiB
TypeScript
82 lines
2.1 KiB
TypeScript
'use server'
|
||
|
||
import { createClient } from '@/lib/supabase/server'
|
||
import { revalidatePath } from 'next/cache'
|
||
|
||
export async function updateProfile(formData: FormData) {
|
||
const supabase = await createClient()
|
||
|
||
const { data: { user } } = await supabase.auth.getUser()
|
||
if (!user) {
|
||
return { error: 'Kullanıcı bulunamadı.' }
|
||
}
|
||
|
||
const firstName = formData.get('firstName') as string
|
||
const lastName = formData.get('lastName') as string
|
||
const avatarFile = formData.get('avatar') as File | null
|
||
|
||
let avatarUrl = undefined
|
||
|
||
// Upload avatar if a new file is provided
|
||
if (avatarFile && avatarFile.size > 0) {
|
||
const fileExt = avatarFile.name.split('.').pop()
|
||
const fileName = `${user.id}/${Math.random()}.${fileExt}`
|
||
|
||
const { error: uploadError, data: uploadData } = await supabase.storage
|
||
.from('avatars')
|
||
.upload(fileName, avatarFile, { upsert: true })
|
||
|
||
if (uploadError) {
|
||
return { error: 'Profil fotoğrafı yüklenirken hata oluştu: ' + uploadError.message }
|
||
}
|
||
|
||
// Get public URL
|
||
const { data: { publicUrl } } = supabase.storage
|
||
.from('avatars')
|
||
.getPublicUrl(fileName)
|
||
|
||
avatarUrl = publicUrl
|
||
}
|
||
|
||
// Update profile
|
||
const updateData: any = {
|
||
first_name: firstName,
|
||
last_name: lastName,
|
||
}
|
||
|
||
if (avatarUrl) {
|
||
updateData.avatar_url = avatarUrl
|
||
}
|
||
|
||
// Upsert profile in case it doesn't exist yet
|
||
const { error } = await supabase
|
||
.from('profiles')
|
||
.upsert({ id: user.id, ...updateData })
|
||
|
||
if (error) {
|
||
return { error: 'Profil güncellenirken hata oluştu: ' + error.message }
|
||
}
|
||
|
||
revalidatePath('/settings')
|
||
return { success: true }
|
||
}
|
||
|
||
export async function updatePassword(formData: FormData) {
|
||
const supabase = await createClient()
|
||
const password = formData.get('password') as string
|
||
|
||
if (!password || password.length < 6) {
|
||
return { error: 'Şifre en az 6 karakter olmalıdır.' }
|
||
}
|
||
|
||
const { error } = await supabase.auth.updateUser({
|
||
password: password
|
||
})
|
||
|
||
if (error) {
|
||
return { error: 'Şifre güncellenirken hata oluştu: ' + error.message }
|
||
}
|
||
|
||
return { success: true }
|
||
}
|