Edit: /tmp/tsx-0/17887-2481478fad284191594f93e9edc59d8c7ee7769d (47506B)
{"code":"__filename=\"/opt/canhelp/node_modules/better-auth/dist/plugins/admin/routes.mjs\";(()=>{\nvar __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf;var __hasOwnProp=Object.prototype.hasOwnProperty;var __name=(target,value)=>__defProp(target,\"name\",{value,configurable:true});var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:true})};var __copyProps=(to,from,except,desc)=>{if(from&&typeof from===\"object\"||typeof from===\"function\"){for(let key of __getOwnPropNames(from))if(!__hasOwnProp.call(to,key)&&key!==except)__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable})}return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,\"default\",{value:mod,enumerable:true}):target,mod));var __toCommonJS=mod=>__copyProps(__defProp({},\"__esModule\",{value:true}),mod);var routes_exports={};__export(routes_exports,{adminUpdateUser:()=>adminUpdateUser,banUser:()=>banUser,createUser:()=>createUser,getUser:()=>getUser,impersonateUser:()=>impersonateUser,listUserSessions:()=>listUserSessions,listUsers:()=>listUsers,removeUser:()=>removeUser,revokeUserSession:()=>revokeUserSession,revokeUserSessions:()=>revokeUserSessions,setRole:()=>setRole,setUserPassword:()=>setUserPassword,stopImpersonating:()=>stopImpersonating,unbanUser:()=>unbanUser,userHasPermission:()=>userHasPermission});module.exports=__toCommonJS(routes_exports);var import_date=require(\"../../utils/date.mjs\");var import_schema=require(\"../../db/schema.mjs\");var import_cookies=require(\"../../cookies/index.mjs\");var import_session=require(\"../../api/routes/session.mjs\");var import_api=require(\"../../api/index.mjs\");var import_error_codes=require(\"./error-codes.mjs\");var import_has_permission=require(\"./has-permission.mjs\");var import_error=require(\"@better-auth/core/error\");var import_adapter=require(\"@better-auth/core/db/adapter\");var import_api2=require(\"@better-auth/core/api\");var z=__toESM(require(\"zod\"));const adminMiddleware=(0,import_api2.createAuthMiddleware)(async ctx=>{const session=await(0,import_session.getSessionFromCtx)(ctx);if(!session)throw import_error.APIError.fromStatus(\"UNAUTHORIZED\");return{session}});function parseRoles(roles){return Array.isArray(roles)?roles.join(\",\"):roles}__name(parseRoles,\"parseRoles\");const setRoleBodySchema=z.object({userId:z.coerce.string().meta({description:\"The user id\"}),role:z.union([z.string().meta({description:\"The role to set. `admin` or `user` by default\"}),z.array(z.string().meta({description:\"The roles to set. `admin` or `user` by default\"}))]).meta({description:\"The role to set, this can be a string or an array of strings. Eg: `admin` or `[admin, user]`\"})});const setRole=__name(opts=>(0,import_api2.createAuthEndpoint)(\"/admin/set-role\",{method:\"POST\",body:setRoleBodySchema,requireHeaders:true,use:[adminMiddleware],metadata:{openapi:{operationId:\"setUserRole\",summary:\"Set the role of a user\",description:\"Set the role of a user\",responses:{200:{description:\"User role updated\",content:{\"application/json\":{schema:{type:\"object\",properties:{user:{$ref:\"#/components/schemas/User\"}}}}}}}},$Infer:{body:{}}}},async ctx=>{if(!(0,import_has_permission.hasPermission)({userId:ctx.context.session.user.id,role:ctx.context.session.user.role,options:opts,permissions:{user:[\"set-role\"]}}))throw import_error.APIError.from(\"FORBIDDEN\",import_error_codes.ADMIN_ERROR_CODES.YOU_ARE_NOT_ALLOWED_TO_CHANGE_USERS_ROLE);const roles=opts.roles;if(roles){const inputRoles=Array.isArray(ctx.body.role)?ctx.body.role:[ctx.body.role];for(const role of inputRoles)if(!roles[role])throw import_error.APIError.from(\"BAD_REQUEST\",import_error_codes.ADMIN_ERROR_CODES.YOU_ARE_NOT_ALLOWED_TO_SET_NON_EXISTENT_VALUE)}const updatedUser=await ctx.context.internalAdapter.updateUser(ctx.body.userId,{role:parseRoles(ctx.body.role)});return ctx.json({user:(0,import_schema.parseUserOutput)(ctx.context.options,updatedUser)})}),\"setRole\");const getUserQuerySchema=z.object({id:z.string().meta({description:\"The id of the User\"})});const getUser=__name(opts=>(0,import_api2.createAuthEndpoint)(\"/admin/get-user\",{method:\"GET\",query:getUserQuerySchema,use:[adminMiddleware],metadata:{openapi:{operationId:\"getUser\",summary:\"Get an existing user\",description:\"Get an existing user\",responses:{200:{description:\"User\",content:{\"application/json\":{schema:{type:\"object\",properties:{user:{$ref:\"#/components/schemas/User\"}}}}}}}}}},async ctx=>{const{id}=ctx.query;if(!(0,import_has_permission.hasPermission)({userId:ctx.context.session.user.id,role:ctx.context.session.user.role,options:opts,permissions:{user:[\"get\"]}}))throw import_error.APIError.from(\"FORBIDDEN\",import_error_codes.ADMIN_ERROR_CODES.YOU_ARE_NOT_ALLOWED_TO_GET_USER);const user=await ctx.context.internalAdapter.findUserById(id);if(!user)throw import_error.APIError.from(\"NOT_FOUND\",import_error.BASE_ERROR_CODES.USER_NOT_FOUND);return(0,import_schema.parseUserOutput)(ctx.context.options,user)}),\"getUser\");const createUserBodySchema=z.object({email:z.string().meta({description:\"The email of the user\"}),password:z.string().optional().meta({description:\"The password of the user. If not provided, the user will be created without a credential account (useful for magic link or social login only users).\"}),name:z.string().meta({description:\"The name of the user\"}),role:z.union([z.string().meta({description:\"The role of the user\"}),z.array(z.string().meta({description:\"The roles of user\"}))]).optional().meta({description:`A string or array of strings representing the roles to apply to the new user. Eg: \"user\"`}),data:z.record(z.string(),z.any()).optional().meta({description:\"Extra fields for the user. Including custom additional fields.\"})});const createUser=__name(opts=>(0,import_api2.createAuthEndpoint)(\"/admin/create-user\",{method:\"POST\",body:createUserBodySchema,metadata:{openapi:{operationId:\"createUser\",summary:\"Create a new user\",description:\"Create a new user\",responses:{200:{description:\"User created\",content:{\"application/json\":{schema:{type:\"object\",properties:{user:{$ref:\"#/components/schemas/User\"}}}}}}}},$Infer:{body:{}}}},async ctx=>{const session=await(0,import_session.getSessionFromCtx)(ctx);if(!session&&(ctx.request||ctx.headers))throw ctx.error(\"UNAUTHORIZED\");if(session){if(!(0,import_has_permission.hasPermission)({userId:session.user.id,role:session.user.role,options:opts,permissions:{user:[\"create\"]}}))throw import_error.APIError.from(\"FORBIDDEN\",import_error_codes.ADMIN_ERROR_CODES.YOU_ARE_NOT_ALLOWED_TO_CREATE_USERS)}const email=ctx.body.email.toLowerCase();if(!z.email().safeParse(email).success)throw import_error.APIError.from(\"BAD_REQUEST\",import_error.BASE_ERROR_CODES.INVALID_EMAIL);if(await ctx.context.internalAdapter.findUserByEmail(email))throw import_error.APIError.from(\"BAD_REQUEST\",import_error_codes.ADMIN_ERROR_CODES.USER_ALREADY_EXISTS_USE_ANOTHER_EMAIL);const user=await ctx.context.internalAdapter.createUser({email,name:ctx.body.name,role:(ctx.body.role&&parseRoles(ctx.body.role))??opts?.defaultRole??\"user\",...ctx.body.data});if(!user)throw import_error.APIError.from(\"INTERNAL_SERVER_ERROR\",import_error_codes.ADMIN_ERROR_CODES.FAILED_TO_CREATE_USER);if(ctx.body.password){const hashedPassword=await ctx.context.password.hash(ctx.body.password);await ctx.context.internalAdapter.linkAccount({accountId:user.id,providerId:\"credential\",password:hashedPassword,userId:user.id})}return ctx.json({user:(0,import_schema.parseUserOutput)(ctx.context.options,user)})}),\"createUser\");const adminUpdateUserBodySchema=z.object({userId:z.coerce.string().meta({description:\"The user id\"}),data:z.record(z.any(),z.any()).meta({description:\"The user data to update\"})});const adminUpdateUser=__name(opts=>(0,import_api2.createAuthEndpoint)(\"/admin/update-user\",{method:\"POST\",body:adminUpdateUserBodySchema,use:[adminMiddleware],metadata:{openapi:{operationId:\"updateUser\",summary:\"Update a user\",description:\"Update a user's details\",responses:{200:{description:\"User updated\",content:{\"application/json\":{schema:{type:\"object\",properties:{user:{$ref:\"#/components/schemas/User\"}}}}}}}}}},async ctx=>{if(!(0,import_has_permission.hasPermission)({userId:ctx.context.session.user.id,role:ctx.context.session.user.role,options:opts,permissions:{user:[\"update\"]}}))throw import_error.APIError.from(\"FORBIDDEN\",import_error_codes.ADMIN_ERROR_CODES.YOU_ARE_NOT_ALLOWED_TO_UPDATE_USERS);if(Object.keys(ctx.body.data).length===0)throw import_error.APIError.from(\"BAD_REQUEST\",import_error_codes.ADMIN_ERROR_CODES.NO_DATA_TO_UPDATE);if(Object.prototype.hasOwnProperty.call(ctx.body.data,\"role\")){if(!(0,import_has_permission.hasPermission)({userId:ctx.context.session.user.id,role:ctx.context.session.user.role,options:opts,permissions:{user:[\"set-role\"]}}))throw import_error.APIError.from(\"FORBIDDEN\",import_error_codes.ADMIN_ERROR_CODES.YOU_ARE_NOT_ALLOWED_TO_CHANGE_USERS_ROLE);const roleValue=ctx.body.data.role;const inputRoles=Array.isArray(roleValue)?roleValue:[roleValue];for(const role of inputRoles){if(typeof role!==\"string\")throw import_error.APIError.from(\"BAD_REQUEST\",import_error_codes.ADMIN_ERROR_CODES.INVALID_ROLE_TYPE);if(opts.roles&&!opts.roles[role])throw import_error.APIError.from(\"BAD_REQUEST\",import_error_codes.ADMIN_ERROR_CODES.YOU_ARE_NOT_ALLOWED_TO_SET_NON_EXISTENT_VALUE)}ctx.body.data.role=parseRoles(inputRoles)}const updatedUser=await ctx.context.internalAdapter.updateUser(ctx.body.userId,ctx.body.data);return ctx.json((0,import_schema.parseUserOutput)(ctx.context.options,updatedUser))}),\"adminUpdateUser\");const listUsersQuerySchema=z.object({searchValue:z.string().optional().meta({description:'The value to search for. Eg: \"some name\"'}),searchField:z.enum([\"email\",\"name\"]).meta({description:'The field to search in, defaults to email. Can be `email` or `name`. Eg: \"name\"'}).optional(),searchOperator:z.enum([\"contains\",\"starts_with\",\"ends_with\"]).meta({description:'The operator to use for the search. Can be `contains`, `starts_with` or `ends_with`. Eg: \"contains\"'}).optional(),limit:z.string().meta({description:\"The number of users to return\"}).or(z.number()).optional(),offset:z.string().meta({description:\"The offset to start from\"}).or(z.number()).optional(),sortBy:z.string().meta({description:\"The field to sort by\"}).optional(),sortDirection:z.enum([\"asc\",\"desc\"]).meta({description:\"The direction to sort by\"}).optional(),filterField:z.string().meta({description:\"The field to filter by\"}).optional(),filterValue:z.string().meta({description:\"The value to filter by\"}).or(z.number()).or(z.boolean()).or(z.array(z.string())).or(z.array(z.number())).optional(),filterOperator:z.enum(import_adapter.whereOperators).meta({description:\"The operator to use for the filter\"}).optional()});const listUsers=__name(opts=>(0,import_api2.createAuthEndpoint)(\"/admin/list-users\",{method:\"GET\",use:[adminMiddleware],query:listUsersQuerySchema,metadata:{openapi:{operationId:\"listUsers\",summary:\"List users\",description:\"List users\",responses:{200:{description:\"List of users\",content:{\"application/json\":{schema:{type:\"object\",properties:{users:{type:\"array\",items:{$ref:\"#/components/schemas/User\"}},total:{type:\"number\"},limit:{type:\"number\"},offset:{type:\"number\"}},required:[\"users\",\"total\"]}}}}}}}},async ctx=>{const session=ctx.context.session;if(!(0,import_has_permission.hasPermission)({userId:ctx.context.session.user.id,role:session.user.role,options:opts,permissions:{user:[\"list\"]}}))throw import_error.APIError.from(\"FORBIDDEN\",import_error_codes.ADMIN_ERROR_CODES.YOU_ARE_NOT_ALLOWED_TO_LIST_USERS);const where=[];if(ctx.query?.searchValue)where.push({field:ctx.query.searchField||\"email\",operator:ctx.query.searchOperator||\"contains\",value:ctx.query.searchValue});if(ctx.query?.filterValue!==void 0)where.push({field:ctx.query.filterField||\"email\",operator:ctx.query.filterOperator||\"eq\",value:ctx.query.filterValue});try{const users=await ctx.context.internalAdapter.listUsers(Number(ctx.query?.limit)||void 0,Number(ctx.query?.offset)||void 0,ctx.query?.sortBy?{field:ctx.query.sortBy,direction:ctx.query.sortDirection||\"asc\"}:void 0,where.length?where:void 0);const total=await ctx.context.internalAdapter.countTotalUsers(where.length?where:void 0);return ctx.json({users:users.map(user=>(0,import_schema.parseUserOutput)(ctx.context.options,user)),total,limit:Number(ctx.query?.limit)||void 0,offset:Number(ctx.query?.offset)||void 0})}catch{return ctx.json({users:[],total:0})}}),\"listUsers\");const listUserSessionsBodySchema=z.object({userId:z.coerce.string().meta({description:\"The user id\"})});const listUserSessions=__name(opts=>(0,import_api2.createAuthEndpoint)(\"/admin/list-user-sessions\",{method:\"POST\",use:[adminMiddleware],body:listUserSessionsBodySchema,metadata:{openapi:{operationId:\"listUserSessions\",summary:\"List user sessions\",description:\"List user sessions\",responses:{200:{description:\"List of user sessions\",content:{\"application/json\":{schema:{type:\"object\",properties:{sessions:{type:\"array\",items:{$ref:\"#/components/schemas/Session\"}}}}}}}}}}},async ctx=>{const session=ctx.context.session;if(!(0,import_has_permission.hasPermission)({userId:ctx.context.session.user.id,role:session.user.role,options:opts,permissions:{session:[\"list\"]}}))throw import_error.APIError.from(\"FORBIDDEN\",import_error_codes.ADMIN_ERROR_CODES.YOU_ARE_NOT_ALLOWED_TO_LIST_USERS_SESSIONS);const sessions=await ctx.context.internalAdapter.listSessions(ctx.body.userId);return ctx.json({sessions:sessions.map(s=>(0,import_schema.parseSessionOutput)(ctx.context.options,s))})}),\"listUserSessions\");const unbanUserBodySchema=z.object({userId:z.coerce.string().meta({description:\"The user id\"})});const unbanUser=__name(opts=>(0,import_api2.createAuthEndpoint)(\"/admin/unban-user\",{method:\"POST\",body:unbanUserBodySchema,use:[adminMiddleware],metadata:{openapi:{operationId:\"unbanUser\",summary:\"Unban a user\",description:\"Unban a user\",responses:{200:{description:\"User unbanned\",content:{\"application/json\":{schema:{type:\"object\",properties:{user:{$ref:\"#/components/schemas/User\"}}}}}}}}}},async ctx=>{const session=ctx.context.session;if(!(0,import_has_permission.hasPermission)({userId:ctx.context.session.user.id,role:session.user.role,options:opts,permissions:{user:[\"ban\"]}}))throw import_error.APIError.from(\"FORBIDDEN\",import_error_codes.ADMIN_ERROR_CODES.YOU_ARE_NOT_ALLOWED_TO_BAN_USERS);const user=await ctx.context.internalAdapter.updateUser(ctx.body.userId,{banned:false,banExpires:null,banReason:null,updatedAt:new Date});return ctx.json({user:(0,import_schema.parseUserOutput)(ctx.context.options,user)})}),\"unbanUser\");const banUserBodySchema=z.object({userId:z.coerce.string().meta({description:\"The user id\"}),banReason:z.string().meta({description:\"The reason for the ban\"}).optional(),banExpiresIn:z.number().meta({description:\"The number of seconds until the ban expires\"}).optional()});const banUser=__name(opts=>(0,import_api2.createAuthEndpoint)(\"/admin/ban-user\",{method:\"POST\",body:banUserBodySchema,use:[adminMiddleware],metadata:{openapi:{operationId:\"banUser\",summary:\"Ban a user\",description:\"Ban a user\",responses:{200:{description:\"User banned\",content:{\"application/json\":{schema:{type:\"object\",properties:{user:{$ref:\"#/components/schemas/User\"}}}}}}}}}},async ctx=>{const session=ctx.context.session;if(!(0,import_has_permission.hasPermission)({userId:ctx.context.session.user.id,role:session.user.role,options:opts,permissions:{user:[\"ban\"]}}))throw import_error.APIError.from(\"FORBIDDEN\",import_error_codes.ADMIN_ERROR_CODES.YOU_ARE_NOT_ALLOWED_TO_BAN_USERS);if(!await ctx.context.internalAdapter.findUserById(ctx.body.userId))throw import_error.APIError.from(\"NOT_FOUND\",import_error.BASE_ERROR_CODES.USER_NOT_FOUND);if(ctx.body.userId===ctx.context.session.user.id)throw import_error.APIError.from(\"BAD_REQUEST\",import_error_codes.ADMIN_ERROR_CODES.YOU_CANNOT_BAN_YOURSELF);const user=await ctx.context.internalAdapter.updateUser(ctx.body.userId,{banned:true,banReason:ctx.body.banReason||opts?.defaultBanReason||\"No reason\",banExpires:ctx.body.banExpiresIn?(0,import_date.getDate)(ctx.body.banExpiresIn,\"sec\"):opts?.defaultBanExpiresIn?(0,import_date.getDate)(opts.defaultBanExpiresIn,\"sec\"):void 0,updatedAt:new Date});await ctx.context.internalAdapter.deleteSessions(ctx.body.userId);return ctx.json({user:(0,import_schema.parseUserOutput)(ctx.context.options,user)})}),\"banUser\");const impersonateUserBodySchema=z.object({userId:z.coerce.string().meta({description:\"The user id\"})});const impersonateUser=__name(opts=>(0,import_api2.createAuthEndpoint)(\"/admin/impersonate-user\",{method:\"POST\",body:impersonateUserBodySchema,use:[adminMiddleware],metadata:{openapi:{operationId:\"impersonateUser\",summary:\"Impersonate a user\",description:\"Impersonate a user\",responses:{200:{description:\"Impersonation session created\",content:{\"application/json\":{schema:{type:\"object\",properties:{session:{$ref:\"#/components/schemas/Session\"},user:{$ref:\"#/components/schemas/User\"}}}}}}}}}},async ctx=>{if(!(0,import_has_permission.hasPermission)({userId:ctx.context.session.user.id,role:ctx.context.session.user.role,options:opts,permissions:{user:[\"impersonate\"]}}))throw import_error.APIError.from(\"FORBIDDEN\",import_error_codes.ADMIN_ERROR_CODES.YOU_ARE_NOT_ALLOWED_TO_IMPERSONATE_USERS);const targetUser=await ctx.context.internalAdapter.findUserById(ctx.body.userId);if(!targetUser)throw import_error.APIError.from(\"NOT_FOUND\",import_error.BASE_ERROR_CODES.USER_NOT_FOUND);const adminRoles=(Array.isArray(opts.adminRoles)?opts.adminRoles:opts.adminRoles?.split(\",\")||[]).map(role=>role.trim());if((targetUser.role||opts.defaultRole||\"user\").split(\",\").some(role=>adminRoles.includes(role))||!!opts.adminUserIds?.includes(targetUser.id)){if(!(opts.allowImpersonatingAdmins===true||(0,import_has_permission.hasPermission)({userId:ctx.context.session.user.id,role:ctx.context.session.user.role,options:opts,permissions:{user:[\"impersonate-admins\"]}})))throw import_error.APIError.from(\"FORBIDDEN\",import_error_codes.ADMIN_ERROR_CODES.YOU_CANNOT_IMPERSONATE_ADMINS)}const session=await ctx.context.internalAdapter.createSession(targetUser.id,true,{impersonatedBy:ctx.context.session.user.id,expiresAt:opts?.impersonationSessionDuration?(0,import_date.getDate)(opts.impersonationSessionDuration,\"sec\"):(0,import_date.getDate)(3600,\"sec\")},true);if(!session)throw import_error.APIError.from(\"INTERNAL_SERVER_ERROR\",import_error_codes.ADMIN_ERROR_CODES.FAILED_TO_CREATE_USER);const authCookies=ctx.context.authCookies;(0,import_cookies.deleteSessionCookie)(ctx);const dontRememberMeCookie=await ctx.getSignedCookie(ctx.context.authCookies.dontRememberToken.name,ctx.context.secret);const adminCookieProp=ctx.context.createAuthCookie(\"admin_session\");await ctx.setSignedCookie(adminCookieProp.name,`${ctx.context.session.session.token}:${dontRememberMeCookie||\"\"}`,ctx.context.secret,authCookies.sessionToken.attributes);await(0,import_cookies.setSessionCookie)(ctx,{session,user:targetUser},true);return ctx.json({session,user:(0,import_schema.parseUserOutput)(ctx.context.options,targetUser)})}),\"impersonateUser\");const stopImpersonating=__name(()=>(0,import_api2.createAuthEndpoint)(\"/admin/stop-impersonating\",{method:\"POST\",requireHeaders:true},async ctx=>{const session=await(0,import_session.getSessionFromCtx)(ctx);if(!session)throw import_error.APIError.fromStatus(\"UNAUTHORIZED\");if(!session.session.impersonatedBy)throw import_error.APIError.fromStatus(\"BAD_REQUEST\",{message:\"You are not impersonating anyone\"});const user=await ctx.context.internalAdapter.findUserById(session.session.impersonatedBy);if(!user)throw import_error.APIError.fromStatus(\"INTERNAL_SERVER_ERROR\",{message:\"Failed to find user\"});const adminSessionCookie=ctx.context.createAuthCookie(\"admin_session\");const adminCookie=await ctx.getSignedCookie(adminSessionCookie.name,ctx.context.secret);if(!adminCookie)throw import_error.APIError.fromStatus(\"INTERNAL_SERVER_ERROR\",{message:\"Failed to find admin session\"});const[adminSessionToken,dontRememberMeCookie]=adminCookie?.split(\":\");const adminSession=await ctx.context.internalAdapter.findSession(adminSessionToken);if(!adminSession||adminSession.session.userId!==user.id)throw import_error.APIError.fromStatus(\"INTERNAL_SERVER_ERROR\",{message:\"Failed to find admin session\"});await ctx.context.internalAdapter.deleteSession(session.session.token);await(0,import_cookies.setSessionCookie)(ctx,adminSession,!!dontRememberMeCookie);(0,import_cookies.expireCookie)(ctx,adminSessionCookie);return ctx.json({session:(0,import_schema.parseSessionOutput)(ctx.context.options,adminSession.session),user:(0,import_schema.parseUserOutput)(ctx.context.options,adminSession.user)})}),\"stopImpersonating\");const revokeUserSessionBodySchema=z.object({sessionToken:z.string().meta({description:\"The session token\"})});const revokeUserSession=__name(opts=>(0,import_api2.createAuthEndpoint)(\"/admin/revoke-user-session\",{method:\"POST\",body:revokeUserSessionBodySchema,use:[adminMiddleware],metadata:{openapi:{operationId:\"revokeUserSession\",summary:\"Revoke a user session\",description:\"Revoke a user session\",responses:{200:{description:\"Session revoked\",content:{\"application/json\":{schema:{type:\"object\",properties:{success:{type:\"boolean\"}}}}}}}}}},async ctx=>{const session=ctx.context.session;if(!(0,import_has_permission.hasPermission)({userId:ctx.context.session.user.id,role:session.user.role,options:opts,permissions:{session:[\"revoke\"]}}))throw import_error.APIError.from(\"FORBIDDEN\",import_error_codes.ADMIN_ERROR_CODES.YOU_ARE_NOT_ALLOWED_TO_REVOKE_USERS_SESSIONS);await ctx.context.internalAdapter.deleteSession(ctx.body.sessionToken);return ctx.json({success:true})}),\"revokeUserSession\");const revokeUserSessionsBodySchema=z.object({userId:z.coerce.string().meta({description:\"The user id\"})});const revokeUserSessions=__name(opts=>(0,import_api2.createAuthEndpoint)(\"/admin/revoke-user-sessions\",{method:\"POST\",body:revokeUserSessionsBodySchema,use:[adminMiddleware],metadata:{openapi:{operationId:\"revokeUserSessions\",summary:\"Revoke all user sessions\",description:\"Revoke all user sessions\",responses:{200:{description:\"Sessions revoked\",content:{\"application/json\":{schema:{type:\"object\",properties:{success:{type:\"boolean\"}}}}}}}}}},async ctx=>{const session=ctx.context.session;if(!(0,import_has_permission.hasPermission)({userId:ctx.context.session.user.id,role:session.user.role,options:opts,permissions:{session:[\"revoke\"]}}))throw import_error.APIError.from(\"FORBIDDEN\",import_error_codes.ADMIN_ERROR_CODES.YOU_ARE_NOT_ALLOWED_TO_REVOKE_USERS_SESSIONS);await ctx.context.internalAdapter.deleteSessions(ctx.body.userId);return ctx.json({success:true})}),\"revokeUserSessions\");const removeUserBodySchema=z.object({userId:z.coerce.string().meta({description:\"The user id\"})});const removeUser=__name(opts=>(0,import_api2.createAuthEndpoint)(\"/admin/remove-user\",{method:\"POST\",body:removeUserBodySchema,use:[adminMiddleware],metadata:{openapi:{operationId:\"removeUser\",summary:\"Remove a user\",description:\"Delete a user and all their sessions and accounts. Cannot be undone.\",responses:{200:{description:\"User removed\",content:{\"application/json\":{schema:{type:\"object\",properties:{success:{type:\"boolean\"}}}}}}}}}},async ctx=>{const session=ctx.context.session;if(!(0,import_has_permission.hasPermission)({userId:ctx.context.session.user.id,role:session.user.role,options:opts,permissions:{user:[\"delete\"]}}))throw import_error.APIError.from(\"FORBIDDEN\",import_error_codes.ADMIN_ERROR_CODES.YOU_ARE_NOT_ALLOWED_TO_DELETE_USERS);if(ctx.body.userId===ctx.context.session.user.id)throw import_error.APIError.from(\"BAD_REQUEST\",import_error_codes.ADMIN_ERROR_CODES.YOU_CANNOT_REMOVE_YOURSELF);if(!await ctx.context.internalAdapter.findUserById(ctx.body.userId))throw import_error.APIError.from(\"NOT_FOUND\",import_error.BASE_ERROR_CODES.USER_NOT_FOUND);await ctx.context.internalAdapter.deleteUser(ctx.body.userId);return ctx.json({success:true})}),\"removeUser\");const setUserPasswordBodySchema=z.object({newPassword:z.string().nonempty(\"newPassword cannot be empty\").meta({description:\"The new password\"}),userId:z.coerce.string().nonempty(\"userId cannot be empty\").meta({description:\"The user id\"})});const setUserPassword=__name(opts=>(0,import_api2.createAuthEndpoint)(\"/admin/set-user-password\",{method:\"POST\",body:setUserPasswordBodySchema,use:[adminMiddleware],metadata:{openapi:{operationId:\"setUserPassword\",summary:\"Set a user's password\",description:\"Set a user's password\",responses:{200:{description:\"Password set\",content:{\"application/json\":{schema:{type:\"object\",properties:{status:{type:\"boolean\"}}}}}}}}}},async ctx=>{if(!(0,import_has_permission.hasPermission)({userId:ctx.context.session.user.id,role:ctx.context.session.user.role,options:opts,permissions:{user:[\"set-password\"]}}))throw import_error.APIError.from(\"FORBIDDEN\",import_error_codes.ADMIN_ERROR_CODES.YOU_ARE_NOT_ALLOWED_TO_SET_USERS_PASSWORD);const{newPassword,userId}=ctx.body;const minPasswordLength=ctx.context.password.config.minPasswordLength;if(newPassword.length
maxPasswordLength){ctx.context.logger.error(\"Password is too long\");throw import_error.APIError.from(\"BAD_REQUEST\",import_error.BASE_ERROR_CODES.PASSWORD_TOO_LONG)}const hashedPassword=await ctx.context.password.hash(newPassword);await ctx.context.internalAdapter.updatePassword(userId,hashedPassword);return ctx.json({status:true})}),\"setUserPassword\");const userHasPermissionBodySchema=z.object({userId:z.coerce.string().optional().meta({description:`The user id. Eg: \"user-id\"`}),role:z.string().optional().meta({description:`The role to check permission for. Eg: \"admin\"`})}).and(z.union([z.object({permission:z.record(z.string(),z.array(z.string())),permissions:z.undefined()}),z.object({permission:z.undefined(),permissions:z.record(z.string(),z.array(z.string()))})]));const userHasPermission=__name(opts=>{return(0,import_api2.createAuthEndpoint)(\"/admin/has-permission\",{method:\"POST\",body:userHasPermissionBodySchema,metadata:{openapi:{description:\"Check if the user has permission\",requestBody:{content:{\"application/json\":{schema:{type:\"object\",properties:{permissions:{type:\"object\",description:\"The permission to check\"}},required:[\"permissions\"]}}}},responses:{\"200\":{description:\"Success\",content:{\"application/json\":{schema:{type:\"object\",properties:{error:{type:\"string\"},success:{type:\"boolean\"}},required:[\"success\"]}}}}}},$Infer:{body:{}}}},async ctx=>{if(!ctx.body?.permissions)throw new import_error.APIError(\"BAD_REQUEST\",{message:\"invalid permission check. no permission(s) were passed.\"});const session=await(0,import_session.getSessionFromCtx)(ctx);if(!session&&(ctx.request||ctx.headers))throw new import_error.APIError(\"UNAUTHORIZED\");if(!session&&!ctx.body.userId&&!ctx.body.role)throw new import_error.APIError(\"BAD_REQUEST\",{message:\"user id or role is required\"});const user=session?.user||(ctx.body.role?{id:ctx.body.userId||\"\",role:ctx.body.role}:null)||(ctx.body.userId?await ctx.context.internalAdapter.findUserById(ctx.body.userId):null);if(!user)throw new import_error.APIError(\"BAD_REQUEST\",{message:\"user not found\"});const result=(0,import_has_permission.hasPermission)({userId:user.id,role:user.role,options:opts,permissions:ctx.body.permissions});return ctx.json({error:null,success:result})})},\"userHasPermission\");0&&(module.exports={adminUpdateUser,banUser,createUser,getUser,impersonateUser,listUserSessions,listUsers,removeUser,revokeUserSession,revokeUserSessions,setRole,setUserPassword,stopImpersonating,unbanUser,userHasPermission});\n})()\n","warnings":[],"map":{"version":3,"mappings":"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","names":["import_api"],"ignoreList":[],"sources":["/opt/canhelp/node_modules/better-auth/dist/plugins/admin/routes.mjs"],"sourcesContent":[null]}}