2 lines
7.4 KiB
JavaScript
2 lines
7.4 KiB
JavaScript
import{r as g,g as f,h as S,c as i,a as e,i as h,b as c,w as L,d as m,u as p,t as a,F as w,j as k,_ as V,o as n,m as z,y as C,X as A,n as j}from"#entry";import{u as D}from"./C_U-NUAd.js";import{A as $}from"./C8kQt0fa.js";import{C as T}from"./DaSgy0Cl.js";const N={class:"min-h-full py-16 bg-gray-50"},I={class:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"},E={class:"flex items-center justify-between mb-6"},O={key:0,class:"mb-8"},P={class:"text-2xl font-display font-bold text-gray-900 mb-4"},H={class:"space-y-4"},K={class:"flex items-start justify-between"},W={class:"flex-1"},X={class:"text-lg font-semibold text-gray-900"},Z={class:"text-sm text-gray-600 mt-1"},q={key:0,class:"text-sm text-gray-600"},G={class:"text-xs text-gray-500 mt-2"},J={class:"flex flex-col space-y-2 ml-4"},Q=["onUpdate:modelValue"],Y=["onClick"],ee=["onClick"],te={class:"text-2xl font-display font-bold text-gray-900 mb-4"},se={class:"bg-white rounded-xl shadow-lg overflow-hidden"},oe={class:"min-w-full divide-y divide-gray-200"},ae={class:"bg-white divide-y divide-gray-200"},re={class:"px-6 py-4 whitespace-nowrap"},ie={class:"text-sm font-medium text-gray-900"},ne={class:"px-6 py-4 whitespace-nowrap"},le={class:"text-sm text-gray-600"},de={class:"px-6 py-4 whitespace-nowrap"},ce={class:"text-sm text-gray-600"},me={class:"px-6 py-4 whitespace-nowrap"},ue=["onUpdate:modelValue","onChange"],pe={class:"px-6 py-4 whitespace-nowrap"},ge={class:"text-sm text-gray-600"},he={class:"px-6 py-4 whitespace-nowrap text-right text-sm"},xe=["onClick"],ye={key:1,class:"text-gray-400"},ve={key:1,class:"fixed bottom-20 right-4 bg-green-50 border border-green-200 rounded-lg p-4 shadow-lg"},_e={class:"text-sm text-green-800 flex items-center"},be={key:2,class:"fixed bottom-20 right-4 bg-red-50 border border-red-200 rounded-lg p-4 shadow-lg"},fe={class:"text-sm text-red-800 flex items-center"},Te={__name:"benutzer",setup(we){const x=g([]),v=g(null),l=g(""),r=g(""),y=f(()=>x.value.filter(t=>t.active===!1).map(t=>({...t,selectedRole:t.role||"mitglied"}))),_=f(()=>x.value.filter(t=>t.active===!0)),b=t=>new Date(t).toLocaleString("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}),u=async()=>{try{const t=await $fetch("/api/cms/users/list");x.value=t.users}catch(t){console.error("Fehler beim Laden der Benutzer:",t),r.value="Fehler beim Laden der Benutzerliste"}},R=async t=>{try{await $fetch("/api/cms/users/approve",{method:"POST",body:{userId:t.id,role:t.selectedRole}}),l.value=`Benutzer ${t.name} wurde als ${t.selectedRole} freigeschaltet`,setTimeout(()=>l.value="",3e3),await u()}catch{r.value="Fehler beim Freischalten des Benutzers",setTimeout(()=>r.value="",3e3)}},B=async t=>{if(confirm(`Möchten Sie die Registrierung von ${t.name} wirklich ablehnen?`))try{await $fetch("/api/cms/users/reject",{method:"POST",body:{userId:t.id}}),l.value=`Registrierung von ${t.name} wurde abgelehnt`,setTimeout(()=>l.value="",3e3),await u()}catch{r.value="Fehler beim Ablehnen der Registrierung",setTimeout(()=>r.value="",3e3)}},U=async t=>{try{await $fetch("/api/cms/users/update-role",{method:"POST",body:{userId:t.id,role:t.role}}),l.value=`Rolle von ${t.name} wurde aktualisiert`,setTimeout(()=>l.value="",3e3)}catch{r.value="Fehler beim Aktualisieren der Rolle",setTimeout(()=>r.value="",3e3),await u()}},F=async t=>{if(confirm(`Möchten Sie ${t.name} wirklich deaktivieren?`))try{await $fetch("/api/cms/users/deactivate",{method:"POST",body:{userId:t.id}}),l.value=`Benutzer ${t.name} wurde deaktiviert`,setTimeout(()=>l.value="",3e3),await u()}catch{r.value="Fehler beim Deaktivieren des Benutzers",setTimeout(()=>r.value="",3e3)}};return S(async()=>{try{const t=await $fetch("/api/auth/status");v.value=t.user?.id}catch(t){console.error("Fehler beim Laden des aktuellen Benutzers:",t)}await u()}),D({title:"Benutzerverwaltung - CMS - Harheimer TC"}),(t,o)=>{const M=V;return n(),i("div",N,[e("div",I,[e("div",E,[o[1]||(o[1]=e("div",null,[e("h1",{class:"text-4xl font-display font-bold text-gray-900"}," Benutzerverwaltung "),e("div",{class:"w-24 h-1 bg-primary-600 mt-4"})],-1)),c(M,{to:"/cms",class:"px-4 py-2 bg-gray-200 hover:bg-gray-300 text-gray-800 rounded-lg transition-colors"},{default:L(()=>[...o[0]||(o[0]=[m(" ← Zurück zum CMS ",-1)])]),_:1})]),y.value.length>0?(n(),i("div",O,[e("h2",P,[c(p($),{size:24,class:"inline text-yellow-600 mr-2"}),m(" Wartende Registrierungen ("+a(y.value.length)+") ",1)]),e("div",H,[(n(!0),i(w,null,k(y.value,s=>(n(),i("div",{key:s.id,class:"bg-yellow-50 border-l-4 border-yellow-400 rounded-lg p-6 shadow"},[e("div",K,[e("div",W,[e("h3",X,a(s.name),1),e("p",Z,a(s.email),1),s.phone?(n(),i("p",q,a(s.phone),1)):h("",!0),e("p",G," Registriert am: "+a(b(s.created)),1)]),e("div",J,[z(e("select",{"onUpdate:modelValue":d=>s.selectedRole=d,class:"px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 focus:ring-primary-600"},[...o[2]||(o[2]=[e("option",{value:"mitglied"},"Mitglied",-1),e("option",{value:"vorstand"},"Vorstand",-1),e("option",{value:"admin"},"Administrator",-1)])],8,Q),[[C,s.selectedRole]]),e("button",{onClick:d=>R(s),class:"px-4 py-2 bg-green-600 hover:bg-green-700 text-white text-sm font-semibold rounded-lg transition-colors flex items-center justify-center"},[c(p(T),{size:16,class:"mr-1"}),o[3]||(o[3]=m(" Freischalten ",-1))],8,Y),e("button",{onClick:d=>B(s),class:"px-4 py-2 bg-red-600 hover:bg-red-700 text-white text-sm font-semibold rounded-lg transition-colors flex items-center justify-center"},[c(p(A),{size:16,class:"mr-1"}),o[4]||(o[4]=m(" Ablehnen ",-1))],8,ee)])])]))),128))])])):h("",!0),e("div",null,[e("h2",te," Aktive Benutzer ("+a(_.value.length)+") ",1),e("div",se,[e("table",oe,[o[6]||(o[6]=e("thead",{class:"bg-gray-50"},[e("tr",null,[e("th",{class:"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"}," Name "),e("th",{class:"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"}," E-Mail "),e("th",{class:"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"}," Telefon "),e("th",{class:"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"}," Rolle "),e("th",{class:"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"}," Letzter Login "),e("th",{class:"px-6 py-3 text-right text-xs font-medium text-gray-500 uppercase tracking-wider"}," Aktionen ")])],-1)),e("tbody",ae,[(n(!0),i(w,null,k(_.value,s=>(n(),i("tr",{key:s.id,class:"hover:bg-gray-50"},[e("td",re,[e("div",ie,a(s.name),1)]),e("td",ne,[e("div",le,a(s.email),1)]),e("td",de,[e("div",ce,a(s.phone||"-"),1)]),e("td",me,[z(e("select",{"onUpdate:modelValue":d=>s.role=d,onChange:d=>U(s),class:j(["px-3 py-1 border border-gray-300 rounded text-sm",{"bg-red-50 border-red-300":s.role==="admin","bg-blue-50 border-blue-300":s.role==="vorstand","bg-gray-50 border-gray-300":s.role==="mitglied"}])},[...o[5]||(o[5]=[e("option",{value:"mitglied"},"Mitglied",-1),e("option",{value:"vorstand"},"Vorstand",-1),e("option",{value:"admin"},"Administrator",-1)])],42,ue),[[C,s.role]])]),e("td",pe,[e("div",ge,a(s.lastLogin?b(s.lastLogin):"Nie"),1)]),e("td",he,[s.id!==v.value?(n(),i("button",{key:0,onClick:d=>F(s),class:"text-red-600 hover:text-red-800 font-medium"}," Deaktivieren ",8,xe)):(n(),i("span",ye,"Eigenes Konto"))])]))),128))])])])]),l.value?(n(),i("div",ve,[e("p",_e,[c(p(T),{size:18,class:"mr-2"}),m(" "+a(l.value),1)])])):h("",!0),r.value?(n(),i("div",be,[e("p",fe,[c(p($),{size:18,class:"mr-2"}),m(" "+a(r.value),1)])])):h("",!0)])])}}};export{Te as default};
|