public IHttpActionResult Get(int id) { try { var request = new AuthenticatedRequest(); var isAuth = request.IsApiAuthenticated && AccessTokenManager.IsScope(request.ApiToken, AccessTokenManager.ScopeUsers) || request.IsUserLoggin && request.UserId == id || request.IsAdminLoggin && request.AdminPermissions.HasSystemPermissions(ConfigManager.AppPermissions.SettingsUser); if (!isAuth) { return(Unauthorized()); } if (!DataProvider.UserDao.IsExists(id)) { return(NotFound()); } var user = UserManager.GetUserInfoByUserId(id); return(Ok(new { Value = user })); } catch (Exception ex) { LogUtils.AddErrorLog(ex); return(InternalServerError(ex)); } }
public IHttpActionResult Create() { try { var request = new AuthenticatedRequest(); var userInfo = new UserInfo(request.GetPostObject <Dictionary <string, object> >()); if (!ConfigManager.SystemConfigInfo.IsUserRegistrationGroup) { userInfo.GroupId = 0; } var password = request.GetPostString("password"); var userId = DataProvider.UserDao.Insert(userInfo, password, PageUtils.GetIpAddress(), out var errorMessage); if (userId == 0) { return(BadRequest(errorMessage)); } return(Ok(new { Value = UserManager.GetUserInfoByUserId(userId) })); } catch (Exception ex) { LogUtils.AddErrorLog(ex); return(InternalServerError(ex)); } }
public void Page_Load(object sender, EventArgs e) { var type = Request.QueryString["type"]; var userKeyPrefix = Request["userKeyPrefix"]; var retval = new NameValueCollection(); var request = new AuthenticatedRequest(); if (type == TypeBackup) { var siteId = TranslateUtils.ToInt(Request.Form["siteID"]); var backupType = Request.Form["backupType"]; retval = Backup(siteId, backupType, userKeyPrefix); } else if (type == TypeRecovery) { var siteId = TranslateUtils.ToInt(Request.Form["siteID"]); var isDeleteChannels = TranslateUtils.ToBool(Request.Form["isDeleteChannels"]); var isDeleteTemplates = TranslateUtils.ToBool(Request.Form["isDeleteTemplates"]); var isDeleteFiles = TranslateUtils.ToBool(Request.Form["isDeleteFiles"]); var isZip = TranslateUtils.ToBool(Request.Form["isZip"]); var path = Request.Form["path"]; var isOverride = TranslateUtils.ToBool(Request.Form["isOverride"]); var isUseTable = TranslateUtils.ToBool(Request.Form["isUseTable"]); retval = Recovery(siteId, isDeleteChannels, isDeleteTemplates, isDeleteFiles, isZip, path, isOverride, isUseTable, userKeyPrefix, request); } var jsonString = TranslateUtils.NameValueCollectionToJsonString(retval); Page.Response.Write(jsonString); Page.Response.End(); }
public IHttpActionResult Download() { var request = new AuthenticatedRequest(); if (!request.IsAdminLoggin) { return(Unauthorized()); } var packageId = request.GetPostString("packageId"); var version = request.GetPostString("version"); try { PackageUtils.DownloadPackage(packageId, version); } catch { PackageUtils.DownloadPackage(packageId, version); } if (StringUtils.EqualsIgnoreCase(packageId, PackageUtils.PackageIdSsCms)) { CacheDbUtils.RemoveAndInsert(PackageUtils.CacheKeySsCmsIsDownload, true.ToString()); } return(Ok(new { Value = true })); }
public IHttpActionResult GetConfig() { try { var request = new AuthenticatedRequest(); var siteId = request.SiteId; if (!request.IsAdminLoggin || !request.AdminPermissionsImpl.HasSitePermissions(siteId, ConfigManager.WebSitePermissions.Configration)) { return(Unauthorized()); } var siteInfo = SiteManager.GetSiteInfo(siteId); return(Ok(new { Value = siteInfo, Config = siteInfo.Additional })); } catch (Exception ex) { return(InternalServerError(ex)); } }
public IHttpActionResult Get() { try { var request = new AuthenticatedRequest(); var userId = request.GetQueryInt("userId"); if (!request.IsAdminLoggin) { return(Unauthorized()); } var adminInfo = AdminManager.GetAdminInfoByUserId(userId); if (adminInfo == null) { return(NotFound()); } if (request.AdminId != userId && !request.AdminPermissionsImpl.HasSystemPermissions(ConfigManager.SettingsPermissions.Admin)) { return(Unauthorized()); } var departmentName = DepartmentManager.GetDepartmentName(adminInfo.DepartmentId); var areaName = AreaManager.GetAreaName(adminInfo.AreaId); var permissions = new PermissionsImpl(adminInfo); var level = permissions.GetAdminLevel(); var isSuperAdmin = permissions.IsConsoleAdministrator; var siteNames = new List <string>(); if (!isSuperAdmin) { var siteIdListWithPermissions = permissions.GetSiteIdList(); foreach (var siteId in siteIdListWithPermissions) { siteNames.Add(SiteManager.GetSiteName(SiteManager.GetSiteInfo(siteId))); } } var isOrdinaryAdmin = !permissions.IsSystemAdministrator; var roleNames = string.Empty; if (isOrdinaryAdmin) { roleNames = AdminManager.GetRolesHtml(adminInfo.UserName); } return(Ok(new { Value = adminInfo, DepartmentName = departmentName, AreaName = areaName, Level = level, IsSuperAdmin = isSuperAdmin, SiteNames = TranslateUtils.ObjectCollectionToString(siteNames, "<br />"), IsOrdinaryAdmin = isOrdinaryAdmin, RoleNames = roleNames })); } catch (Exception ex) { return(InternalServerError(ex)); } }
public IHttpActionResult Enable(string pluginId) { try { var request = new AuthenticatedRequest(); if (!request.IsAdminLoggin || !request.AdminPermissionsImpl.HasSystemPermissions(ConfigManager.PluginsPermissions.Add)) { return(Unauthorized()); } var pluginInfo = PluginManager.GetPluginInfo(pluginId); if (pluginInfo != null) { pluginInfo.IsDisabled = !pluginInfo.IsDisabled; DataProvider.PluginDao.UpdateIsDisabled(pluginId, pluginInfo.IsDisabled); PluginManager.ClearCache(); request.AddAdminLog(!pluginInfo.IsDisabled ? "禁用插件" : "启用插件", $"插件:{pluginId}"); } CacheUtils.ClearAll(); CacheDbUtils.Clear(); return(Ok()); } catch (Exception ex) { return(InternalServerError(ex)); } }
public IHttpActionResult Get() { try { var request = new AuthenticatedRequest(); if (!request.IsAdminLoggin || !request.AdminPermissionsImpl.HasSystemPermissions(ConfigManager.PluginsPermissions.Add)) { return(Unauthorized()); } var dict = PluginManager.GetPluginIdAndVersionDict(); var list = dict.Keys.ToList(); var packageIds = TranslateUtils.ObjectCollectionToString(list); return(Ok(new { IsNightly = WebConfigUtils.IsNightlyUpdate, SystemManager.PluginVersion, PackageIds = packageIds })); } catch (Exception ex) { return(InternalServerError(ex)); } }
public IHttpActionResult Login() { try { var request = new AuthenticatedRequest(); var account = request.GetPostString("account"); var password = request.GetPostString("password"); var isAutoLogin = request.GetPostBool("isAutoLogin"); var userInfo = DataProvider.UserDao.Validate(account, password, true, out var _, out var errorMessage); if (userInfo == null) { return(BadRequest(errorMessage)); } var accessToken = request.UserLogin(userInfo.UserName, isAutoLogin); var expiresAt = DateTime.Now.AddDays(Constants.AccessTokenExpireDays); return(Ok(new { Value = userInfo, AccessToken = accessToken, ExpiresAt = expiresAt })); } catch (Exception ex) { LogUtils.AddErrorLog(ex); return(InternalServerError(ex)); } }
public IHttpActionResult CreateLog(int id, [FromBody] UserLogInfo logInfo) { try { var request = new AuthenticatedRequest(); var isAuth = request.IsApiAuthenticated && AccessTokenManager.IsScope(request.ApiToken, AccessTokenManager.ScopeUsers) || request.IsUserLoggin && request.UserId == id || request.IsAdminLoggin && request.AdminPermissions.HasSystemPermissions(ConfigManager.SettingsPermissions.User); if (!isAuth) { return(Unauthorized()); } var userInfo = UserManager.GetUserInfoByUserId(id); if (userInfo == null) { return(NotFound()); } var retVal = DataProvider.UserLogDao.ApiInsert(userInfo.UserName, logInfo); return(Ok(new { Value = retVal })); } catch (Exception ex) { LogUtils.AddErrorLog(ex); return(InternalServerError(ex)); } }
public IHttpActionResult Get(string pluginId) { try { var request = new AuthenticatedRequest(); if (!request.IsAdminLoggin || !request.AdminPermissionsImpl.HasSystemPermissions(ConfigManager.PluginsPermissions.Add)) { return(Unauthorized()); } var plugin = PluginManager.GetPlugin(pluginId); return(Ok(new { IsNightly = WebConfigUtils.IsNightlyUpdate, SystemManager.PluginVersion, Installed = plugin != null, InstalledVersion = plugin != null ? plugin.Version : string.Empty, Package = plugin })); } catch (Exception ex) { return(InternalServerError(ex)); } }
public IHttpActionResult GetPermissions(int adminId) { try { var request = new AuthenticatedRequest(); if (!request.IsAdminLoggin || !request.AdminPermissionsImpl.HasSystemPermissions(ConfigManager.AppPermissions.SettingsAdmin)) { return(Unauthorized()); } if (!request.AdminPermissions.IsSuperAdmin()) { return(Unauthorized()); } var roles = DataProvider.RoleDao.GetRoleNameList().Where(x => !EPredefinedRoleUtils.IsPredefinedRole(x)).ToList(); var allSites = SiteManager.GetSiteInfoList(); var adminInfo = AdminManager.GetAdminInfoByUserId(adminId); var adminRoles = DataProvider.AdministratorsInRolesDao.GetRolesForUser(adminInfo.UserName); string adminLevel; var checkedSites = new List <int>(); var checkedRoles = new List <string>(); if (EPredefinedRoleUtils.IsConsoleAdministrator(adminRoles)) { adminLevel = "SuperAdmin"; } else if (EPredefinedRoleUtils.IsSystemAdministrator(adminRoles)) { adminLevel = "SiteAdmin"; checkedSites = TranslateUtils.StringCollectionToIntList(adminInfo.SiteIdCollection); } else { adminLevel = "Admin"; foreach (var role in roles) { if (!checkedRoles.Contains(role) && !EPredefinedRoleUtils.IsPredefinedRole(role) && adminRoles.Contains(role)) { checkedRoles.Add(role); } } } return(Ok(new { Value = true, Roles = roles, AllSites = allSites, AdminLevel = adminLevel, CheckedSites = checkedSites, CheckedRoles = checkedRoles })); } catch (Exception ex) { return(InternalServerError(ex)); } }
public IHttpActionResult UnLock() { try { var request = new AuthenticatedRequest(); if (!request.IsAdminLoggin || !request.AdminPermissionsImpl.HasSystemPermissions(ConfigManager.AppPermissions.SettingsAdmin)) { return(Unauthorized()); } var id = request.GetPostInt("id"); var adminInfo = AdminManager.GetAdminInfoByUserId(id); DataProvider.AdministratorDao.UnLock(new List <string> { adminInfo.UserName }); request.AddAdminLog("解锁管理员", $"管理员:{adminInfo.UserName}"); return(Ok(new { Value = true })); } catch (Exception ex) { return(InternalServerError(ex)); } }
public IHttpActionResult Download() { try { var request = new AuthenticatedRequest(); if (!request.IsAdminLoggin || !request.AdminPermissionsImpl.HasSystemPermissions(ConfigManager.PluginsPermissions.Add)) { return(Unauthorized()); } var packageId = request.GetPostString("packageId"); var version = request.GetPostString("version"); if (!StringUtils.EqualsIgnoreCase(packageId, PackageUtils.PackageIdSiteServerPlugin)) { try { PackageUtils.DownloadPackage(packageId, version); } catch { PackageUtils.DownloadPackage(packageId, version); } } return(Ok()); } catch (Exception ex) { return(InternalServerError(ex)); } }
public IHttpActionResult Get() { try { var request = new AuthenticatedRequest(); if (!request.IsAdminLoggin || !request.AdminPermissionsImpl.HasSystemPermissions(ConfigManager.AppPermissions.SettingsUserGroup)) { return(Unauthorized()); } var adminNames = DataProvider.AdministratorDao.GetUserNameList(); adminNames.Insert(0, string.Empty); return(Ok(new { Value = UserGroupManager.GetUserGroupInfoList(), AdminNames = adminNames })); } catch (Exception ex) { return(InternalServerError(ex)); } }
public LibraryTextInfo Create([FromBody] LibraryTextInfo library) { var auth = new AuthenticatedRequest(); if (!auth.IsAdminLoggin || !auth.AdminPermissionsImpl.HasSitePermissions(auth.SiteId, ConfigManager.SitePermissions.Library)) { return(Request.Unauthorized <LibraryTextInfo>()); } if (string.IsNullOrEmpty(library.Title)) { return(Request.BadRequest <LibraryTextInfo>("请填写图文标题")); } if (string.IsNullOrEmpty(library.Content)) { return(Request.BadRequest <LibraryTextInfo>("请填写图文正文")); } library.Content = PathUtils.SaveLibraryImage(library.Content); library.Id = DataProvider.LibraryTextDao.Insert(library); return(library); }
public IHttpActionResult Get() { try { var request = new AuthenticatedRequest(); if (!request.IsAdminLoggin || !request.AdminPermissionsImpl.HasSitePermissions(request.SiteId, ConfigManager.WebSitePermissions.Create)) { return(Unauthorized()); } var siteId = request.SiteId; var summary = CreateTaskManager.GetTaskSummary(siteId); return(Ok(new { Value = summary })); } catch (Exception ex) { return(InternalServerError(ex)); } }
public IHttpActionResult GetConfig() { try { var request = new AuthenticatedRequest(); var siteId = request.GetQueryInt("siteId"); var specialId = request.GetQueryInt("specialId"); if (!request.IsAdminLoggin || !request.AdminPermissionsImpl.HasSitePermissions(siteId, ConfigManager.WebSitePermissions.Template)) { return(Unauthorized()); } SpecialInfo specialInfo = null; if (specialId > 0) { specialInfo = SpecialManager.GetSpecialInfo(siteId, specialId); } return(Ok(new { Value = specialInfo, Guid = StringUtils.GetShortGuid(false), })); } catch (Exception ex) { return(InternalServerError(ex)); } }
public IHttpActionResult Main() { var request = new AuthenticatedRequest(); if (!request.IsAdminLoggin) { return(Unauthorized()); } var packageId = request.GetPostString("packageId"); var version = request.GetPostString("version"); var packageType = request.GetPostString("packageType"); if (StringUtils.EqualsIgnoreCase(packageId, PackageUtils.PackageIdSsCms)) { packageType = PackageType.SsCms.Value; } string errorMessage; var idWithVersion = $"{packageId}.{version}"; if (!PackageUtils.UpdatePackage(idWithVersion, PackageType.Parse(packageType), out errorMessage)) { return(BadRequest(errorMessage)); } return(Ok()); }
public IHttpActionResult GetChannels() { try { var request = new AuthenticatedRequest(); var siteId = request.GetQueryInt("siteId"); var channels = new List <object>(); var channelIdList = request.AdminPermissionsImpl.GetChannelIdList(siteId, ConfigManager.ChannelPermissions.ContentAdd); foreach (var permissionChannelId in channelIdList) { var permissionChannelInfo = ChannelManager.GetChannelInfo(siteId, permissionChannelId); channels.Add(new { permissionChannelInfo.Id, ChannelName = ChannelManager.GetChannelNameNavigation(siteId, permissionChannelId) }); } return(Ok(new { Value = channels })); } catch (Exception ex) { LogUtils.AddErrorLog(ex); return(InternalServerError(ex)); } }
public IHttpActionResult Get() { try { var request = new AuthenticatedRequest(); var userId = request.GetQueryInt("userId"); if (userId == 0) { userId = request.AdminId; } if (!request.IsAdminLoggin) { return(Unauthorized()); } var adminInfo = AdminManager.GetAdminInfoByUserId(userId); if (adminInfo == null) { return(NotFound()); } if (request.AdminId != userId && !request.AdminPermissionsImpl.HasSystemPermissions(ConfigManager.AppPermissions.SettingsAdmin)) { return(Unauthorized()); } return(Ok(new { Value = adminInfo })); } catch (Exception ex) { return(InternalServerError(ex)); } }
public IHttpActionResult RemoveCache(string tableName) { try { var request = new AuthenticatedRequest(); if (!request.IsAdminLoggin || !request.AdminPermissionsImpl.HasSystemPermissions(ConfigManager.SettingsPermissions.Site)) { return(Unauthorized()); } TableColumnManager.ClearCache(); var columns = TableColumnManager.GetTableColumnInfoList(tableName, ContentAttribute.MetadataAttributes.Value); return(Ok(new { Value = columns, Count = DataProvider.DatabaseDao.GetCount(tableName) })); } catch (Exception ex) { return(InternalServerError(ex)); } }
public IHttpActionResult Reset() { try { var request = new AuthenticatedRequest(); if (!request.IsAdminLoggin || !request.AdminPermissionsImpl.HasSystemPermissions(ConfigManager.SettingsPermissions.Config)) { return(Unauthorized()); } foreach (var userMenuInfo in UserMenuManager.GetAllUserMenuInfoList()) { DataProvider.UserMenuDao.Delete(userMenuInfo.Id); } request.AddAdminLog("重置用户菜单"); return(Ok(new { Value = UserMenuManager.GetAllUserMenuInfoList() })); } catch (Exception ex) { return(InternalServerError(ex)); } }
public IHttpActionResult Submit() { try { var request = new AuthenticatedRequest(); if (!request.IsAdminLoggin || !request.AdminPermissionsImpl.HasSystemPermissions(ConfigManager.PluginsPermissions.Add)) { return(Unauthorized()); } var fileNames = request.GetPostObject <List <string> >("fileNames"); foreach (var fileName in fileNames) { var localFilePath = PathUtils.GetTemporaryFilesPath(fileName); //var importObject = new ImportObject(siteId, request.AdminName); //importObject.ImportContentsByZipFile(channelInfo, localFilePath, isOverride, isChecked, checkedLevel, request.AdminId, 0, SourceManager.Default); } request.AddAdminLog("安装离线插件", string.Empty); return(Ok(new { Value = true })); } catch (Exception ex) { LogUtils.AddErrorLog(ex); return(InternalServerError(ex)); } }
public IHttpActionResult Delete() { try { var request = new AuthenticatedRequest(); if (!request.IsAdminLoggin || !request.AdminPermissionsImpl.HasSystemPermissions(ConfigManager.SettingsPermissions.Config)) { return(Unauthorized()); } var id = request.GetPostInt("id"); DataProvider.UserMenuDao.Delete(id); return(Ok(new { Value = UserMenuManager.GetAllUserMenuInfoList() })); } catch (Exception ex) { return(InternalServerError(ex)); } }
public IHttpActionResult Main() { try { var request = new AuthenticatedRequest(); var siteId = request.GetPostInt("siteId"); var siteInfo = SiteManager.GetSiteInfo(siteId); var pageChannelId = request.GetPostInt("pageChannelId"); var templateId = request.GetPostInt("templateId"); var totalNum = request.GetPostInt("totalNum"); var pageCount = request.GetPostInt("pageCount"); var currentPageIndex = request.GetPostInt("currentPageIndex"); var stlPageContentsElement = TranslateUtils.DecryptStringBySecretKey(request.GetPostString("stlPageContentsElement")); var nodeInfo = ChannelManager.GetChannelInfo(siteId, pageChannelId); var templateInfo = TemplateManager.GetTemplateInfo(siteId, templateId); var pageInfo = new PageInfo(nodeInfo.Id, 0, siteInfo, templateInfo, new Dictionary <string, object>()) { UserInfo = request.UserInfo }; var contextInfo = new ContextInfo(pageInfo); var stlPageContents = new StlPageContents(stlPageContentsElement, pageInfo, contextInfo); var pageHtml = stlPageContents.Parse(totalNum, currentPageIndex, pageCount, false); return(Ok(pageHtml)); } catch (Exception ex) { return(InternalServerError(ex)); } }
public IHttpActionResult Submit([FromBody] UserMenuInfo menuInfo) { try { var request = new AuthenticatedRequest(); if (!request.IsAdminLoggin || !request.AdminPermissionsImpl.HasSystemPermissions(ConfigManager.SettingsPermissions.Config)) { return(Unauthorized()); } if (menuInfo.Id == 0) { DataProvider.UserMenuDao.Insert(menuInfo); request.AddAdminLog("新增用户菜单", $"用户菜单:{menuInfo.Text}"); } else if (menuInfo.Id > 0) { DataProvider.UserMenuDao.Update(menuInfo); request.AddAdminLog("修改用户菜单", $"用户菜单:{menuInfo.Text}"); } return(Ok(new { Value = UserMenuManager.GetAllUserMenuInfoList() })); } catch (Exception ex) { return(InternalServerError(ex)); } }
public IHttpActionResult List() { try { var request = new AuthenticatedRequest(); var isAuth = request.IsApiAuthenticated && AccessTokenManager.IsScope(request.ApiToken, AccessTokenManager.ScopeUsers) || request.IsAdminLoggin && request.AdminPermissions.HasSystemPermissions(ConfigManager.AppPermissions.SettingsUser); if (!isAuth) { return(Unauthorized()); } var top = request.GetQueryInt("top", 20); var skip = request.GetQueryInt("skip"); var users = DataProvider.UserDao.GetUsers(skip, top); var count = DataProvider.UserDao.GetCount(); return(Ok(new PageResponse(users, top, skip, request.HttpRequest.Url.AbsoluteUri) { Count = count })); } catch (Exception ex) { LogUtils.AddErrorLog(ex); return(InternalServerError(ex)); } }
public IHttpActionResult Update() { try { var request = new AuthenticatedRequest(); if (!request.IsAdminLoggin || !request.AdminPermissionsImpl.HasSystemPermissions(ConfigManager.PluginsPermissions.Add)) { return(Unauthorized()); } var packageId = request.GetPostString("packageId"); var version = request.GetPostString("version"); var packageType = request.GetPostString("packageType"); if (!StringUtils.EqualsIgnoreCase(packageId, PackageUtils.PackageIdSiteServerPlugin)) { string errorMessage; var idWithVersion = $"{packageId}.{version}"; if (!PackageUtils.UpdatePackage(idWithVersion, PackageType.Parse(packageType), out errorMessage)) { return(BadRequest(errorMessage)); } } return(Ok()); } catch (Exception ex) { return(InternalServerError(ex)); } }
public QueryResult List([FromBody] QueryRequest req) { var auth = new AuthenticatedRequest(); if (!auth.IsAdminLoggin || !auth.AdminPermissionsImpl.HasSitePermissions(req.SiteId, ConfigManager.SitePermissions.Library)) { return(Request.Unauthorized <QueryResult>()); } var groups = DataProvider.LibraryGroupDao.GetAll(LibraryType.Image); groups.Insert(0, new LibraryGroupInfo { Id = 0, GroupName = "全部图片" }); var count = DataProvider.LibraryImageDao.GetCount(req.GroupId, req.Keyword); var items = DataProvider.LibraryImageDao.GetAll(req.GroupId, req.Keyword, req.Page, req.PerPage); return(new QueryResult { Groups = groups, Count = count, Items = items }); }
/// <summary> /// Retrieve the profile information for the given authentication context. /// </summary> /// <param name="context">The context under which to execute the request.</param> /// <returns>The profile information for the given authentication context.</returns> public async Task<Profile> GetAuthenticatedClientProfileAsync(IAuthenticatedVisualStudioIntegrateContext context) { var request = new AuthenticatedRequest<Profile> { Method = HttpMethod.Get, RequestUri = new Uri("https://app.vssps.visualstudio.com/_apis/profile/profiles/me") }; var response = await context.ExecuteAsync(request); return response; }
public void updateUser(HttpRequestMessage request, AuthenticatedRequest<UserUpdate> userInfo) { User user = userInfo.VerifySessionKey(); if (user == null) { throw new HttpResponseException(request.CreateResponse(HttpStatusCode.Forbidden, new APIError("invalidSessionKey", "Invalid, expired or non-existant session key. Please login properly"))); } if (userInfo.Data.Email != null) user.Email = userInfo.Data.Email; if (userInfo.Data.FirstName != null) user.FirstName = userInfo.Data.FirstName; if (userInfo.Data.LastName != null) user.LastName = userInfo.Data.LastName; if (userInfo.Data.Password != null) user.Password = MongoDBHelper.Hash(userInfo.Data.Password, user.Salt); MongoDBHelper.database.GetCollection<User>("users").Save(user); }