public void Start() { string pathToInstallCommands = EnvironmentEx.AppDataFolder + "\\Install\\install.json"; if (File.Exists(pathToInstallCommands)) { Status = "REQUIRES_INSTALL"; UseDatabaseConfig = false; return; } UseDatabaseConfig = false; //need to get the connection key and connection string from the web.config Globals.DBConnectionKey = AppSetting("DefaultDbConnection", "MSSQL"); UseDatabaseConfig = true;//default to true don't keep up dating the web.config if (ConfigurationManager.AppSettings["UseDatabaseConfig"] != null) { UseDatabaseConfig = StringEx.ConvertTo <bool>(ConfigurationManager.AppSettings["UseDatabaseConfig"].ToString()); } // todo get setting for data limit multiplier. default is 25 // Globals.DefaultDataFilter this.ApiStatus = AppSetting("ApiStatus", "PRIVATE"); Globals.AddRequestPermissions = StringEx.ConvertTo <bool>(Globals.Application.ConnectionString("AddRequestPermissions", "false")); Status = "RUNNING"; Initialized = true; }
public WebApplication() { Initialized = false; if (ConfigurationManager.AppSettings["UseDatabaseConfig"] != null) { UseDatabaseConfig = StringEx.ConvertTo <bool>(ConfigurationManager.AppSettings["UseDatabaseConfig"].ToString()); } }
public async Task <ServiceResult> SendMessageAsync() { if (CurrentUser == null) { return(ServiceResponse.Error("You must be logged in to access this function.")); } string emailTo = ""; try { string body = await ActionContext.Request.Content.ReadAsStringAsync(); if (string.IsNullOrEmpty(body)) { return(ServiceResponse.Error("You must send valid email info.")); } dynamic formData = JsonConvert.DeserializeObject <dynamic>(body); if (formData == null) { return(ServiceResponse.Error("Invalid email info.")); } if (formData.MessageType == "ContactAdmin") { if (string.IsNullOrWhiteSpace(Globals.Application.AppSetting("SiteEmail", ""))) { return(ServiceResponse.Error("Site email is not set.")); } emailTo = Globals.Application.AppSetting("SiteEmail", ""); } EmailSettings settings = new EmailSettings(); settings.EncryptionKey = Globals.Application.AppSetting("AppKey"); settings.HostPassword = Globals.Application.AppSetting("EmailHostPassword"); settings.HostUser = Globals.Application.AppSetting("EmailHostUser"); settings.MailHost = Globals.Application.AppSetting("MailHost"); settings.MailPort = StringEx.ConvertTo <int>(Globals.Application.AppSetting("MailPort")); settings.SiteDomain = Globals.Application.AppSetting("SiteDomain"); settings.SiteEmail = Globals.Application.AppSetting("SiteEmail"); settings.UseSSL = StringEx.ConvertTo <bool>(Globals.Application.AppSetting("UseSSL")); string ip = network.GetClientIpAddress(this.Request); string Subject = formData.Subject.ToString(); string msg = formData.Message.ToString(); UserManager userManager = new UserManager(Globals.DBConnectionKey, Request.Headers?.Authorization?.Parameter); return(await userManager.SendEmailAsync(ip, emailTo, CurrentUser.Email, Subject, msg, settings)); } catch (Exception ex) { Debug.Assert(false, ex.Message); return(ServiceResponse.Error(ex.Message)); } }
public WebApplication(string connectionKey) { _dbConnectionKey = connectionKey; _logger = new SystemLogger(_dbConnectionKey); if (ConfigurationManager.AppSettings["UseDatabaseConfig"] != null) { UseDatabaseConfig = StringEx.ConvertTo <bool>(ConfigurationManager.AppSettings["UseDatabaseConfig"].ToString()); } }
private int GetSessionLength() { int length = 30; try { using (var context = new GreenWerxDbContext(this._connectionKey)) { Setting s = context.GetAll <Setting>()?.FirstOrDefault(sw => (sw.Name?.EqualsIgnoreCase("SESSIONLENGTH") ?? false)); return(StringEx.ConvertTo <int>(s?.Value ?? "30")); } } catch (Exception ex) { _logger.InsertError(ex.Message, "SessionManager", "GetSessionLength"); return(length); } }
public INode Get() { if (_node == null) { return(_node); } _node.Name = txtName.Text; _node.Status = txtStatus.Text; _node.SortOrder = StringEx.ConvertTo <int>(txtSortOrder.Text); _node.RoleWeight = StringEx.ConvertTo <int>(txtRoleWeight.Text); _node.Active = chkActive.Checked; _node.Deleted = chkDeleted.Checked; _node.Private = chkPrivate.Checked; _node.RoleOperation = cboRoleOperation.Text; return(_node); }
public async Task <ServiceResult> ReSendValidationEmail(string userUUID) { if (string.IsNullOrWhiteSpace(userUUID)) { return(ServiceResponse.Error("Invalid user id.")); } UserManager userManager = new UserManager(Globals.DBConnectionKey, Request.Headers?.Authorization?.Parameter); User user = (User)userManager.GetBy(userUUID); if (user == null) { return(ServiceResponse.Error("User not found!")); } NetworkHelper network = new NetworkHelper(); string ip = network.GetClientIpAddress(this.Request); EmailSettings settings = new EmailSettings(); settings.HostPassword = Globals.Application.AppSetting("EmailHostPassword"); settings.EncryptionKey = Globals.Application.AppSetting("AppKey"); settings.HostUser = Globals.Application.AppSetting("EmailHostUser"); settings.MailHost = Globals.Application.AppSetting("MailHost"); settings.MailPort = StringEx.ConvertTo <int>(Globals.Application.AppSetting("MailPort")); settings.SiteDomain = Globals.Application.AppSetting("SiteDomain"); settings.SiteEmail = Globals.Application.AppSetting("SiteEmail"); settings.UseSSL = StringEx.ConvertTo <bool>(Globals.Application.AppSetting("UseSSL")); ServiceResult res = await userManager.SendUserEmailValidationAsync(user, user.ProviderUserKey, ip, settings); if (res.Code == 200) { return(ServiceResponse.Error("Verification email will be sent. Please follow the instructions in the email. Check your spam/junk folder for the confirmation email if you have not received it.")); } else { return(ServiceResponse.Error("Failed to resend validation email. Try again later.")); } }
public async Task <ServiceResult> SendAccountValidationEmailAsync(SendAccountInfoForm frm) { if (frm == null) { return(ServiceResponse.Error("Invalid form sent to server.")); } if (string.IsNullOrWhiteSpace(frm.Email)) { return(ServiceResponse.Error("All fields must be filled out!")); } NetworkHelper network = new NetworkHelper(); UserManager userManager = new UserManager(Globals.DBConnectionKey, Request.Headers?.Authorization?.Parameter); User u = userManager.GetUserByEmail(frm.Email, false); if (u == null) { return(ServiceResponse.OK("Email sent."));//return ok so the client can't fish for members. } u.ProviderUserKey = Cipher.RandomString(12); if (userManager.SetUserFlag(u.UUID, "PROVIDERUSERKEY", u.ProviderUserKey, false).Code != 200) { return(ServiceResponse.Error("Unable to send email.")); } if (frm.ForgotPassword) { u.ProviderName = UserFlags.ProviderName.ForgotPassword; } else { u.ProviderName = UserFlags.ProviderName.SendAccountInfo; } ServiceResult updateResult = userManager.SetUserFlag(u.UUID, "PROVIDERNAME", u.ProviderName, false); if (updateResult.Code != 200) { return(updateResult); } EmailSettings settings = new EmailSettings(); settings.EncryptionKey = Globals.Application.AppSetting("AppKey"); settings.HostPassword = Globals.Application.AppSetting("EmailHostPassword"); settings.HostUser = Globals.Application.AppSetting("EmailHostUser"); settings.MailHost = Globals.Application.AppSetting("MailHost"); settings.MailPort = StringEx.ConvertTo <int>(Globals.Application.AppSetting("MailPort")); settings.SiteDomain = Globals.Application.AppSetting("SiteDomain"); settings.SiteEmail = Globals.Application.AppSetting("SiteEmail"); settings.UseSSL = StringEx.ConvertTo <bool>(Globals.Application.AppSetting("UseSSL")); string ipAddress = network.GetClientIpAddress(this.Request); if (frm.ForgotPassword) { return(await userManager.SendPasswordResetEmailAsync(u, ipAddress, settings)); } return(await userManager.SendUserInfoAsync(u, network.GetClientIpAddress(this.Request), settings)); }
public async Task <ServiceResult> SendMessage(Message form)// public ServiceResult SendMessage(Message form) { if (form == null) { return(ServiceResponse.Error("No form was posted to the server.")); } form.DateSent = DateTime.UtcNow; bool isValidFormat = Validator.IsValidEmailFormat(form.SentFrom); if (string.IsNullOrWhiteSpace(form.SentFrom) || isValidFormat == false) { ServiceResponse.Error("You must provide a valid email address."); } if (string.IsNullOrWhiteSpace(form.Comment)) { ServiceResponse.Error("You must provide a message."); } NetworkHelper network = new NetworkHelper(); string ipAddress = network.GetClientIpAddress(this.Request); EmailLog emailLog = new EmailLog(); emailLog.Message = form.Comment + "<br/><br/><br/>Message Key:" + emailLog.UUID; emailLog.Subject = form.Subject; emailLog.EmailFrom = form.SentFrom; emailLog.UUIDType += "." + form.Type; if (form.Type?.ToLower() != "contactus") { emailLog.EmailTo = Globals.Application.AppSetting("SiteEmail"); } emailLog.DateCreated = DateTime.UtcNow; emailLog.IpAddress = ipAddress; emailLog.Status = "not_sent"; if (CurrentUser != null) { emailLog.CreatedBy = CurrentUser.UUID; emailLog.AccountUUID = CurrentUser.AccountUUID; } else { emailLog.CreatedBy = "ContactUsForm"; emailLog.AccountUUID = "ContactUsForm"; } EmailLogManager emailLogManager = new EmailLogManager(Globals.DBConnectionKey); if (emailLogManager.Insert(emailLog).Code == 500) { return(ServiceResponse.Error("Failed to save the email. Try again later.")); } EmailSettings settings = new EmailSettings(); settings.EncryptionKey = Globals.Application.AppSetting("AppKey"); settings.HostPassword = Globals.Application.AppSetting("EmailHostPassword"); settings.HostUser = Globals.Application.AppSetting("EmailHostUser"); settings.MailHost = Globals.Application.AppSetting("MailHost"); settings.MailPort = StringEx.ConvertTo <int>(Globals.Application.AppSetting("MailPort")); settings.SiteDomain = Globals.Application.AppSetting("SiteDomain"); settings.SiteEmail = Globals.Application.AppSetting("SiteEmail"); settings.UseSSL = StringEx.ConvertTo <bool>(Globals.Application.AppSetting("UseSSL")); MailAddress ma = new MailAddress(form.SentFrom, form.SentFrom); MailMessage mail = new MailMessage(); mail.From = ma; mail.ReplyToList.Add(ma); mail.To.Add(emailLog.EmailTo); mail.Subject = emailLog.Subject; mail.Body = emailLog.Message + "<br/><br/><br/>IP:" + ipAddress; mail.IsBodyHtml = true; SMTP svc = new SMTP(Globals.DBConnectionKey, settings); return(await svc.SendMailAsync(mail)); }
public async Task <ServiceResult> SendMessage(EmailMessage form)// public ServiceResult SendMessage(Message form) { if (form == null) { return(ServiceResponse.Error("No form was posted to the server.")); } try { form.DateSent = DateTime.UtcNow; bool isValidFormat = Validator.IsValidEmailFormat(form.EmailFrom); if (string.IsNullOrWhiteSpace(form.EmailFrom) || isValidFormat == false) { return(ServiceResponse.Error("You must provide a valid email address.")); } if (string.IsNullOrWhiteSpace(form.Body)) { return(ServiceResponse.Error("You must provide a message.")); } EmailMessageManager EmailMessageManager = new EmailMessageManager(Globals.DBConnectionKey, Request?.Headers?.Authorization?.Parameter); NetworkHelper network = new NetworkHelper(); string ipAddress = network.GetClientIpAddress(this.Request); EmailMessage EmailMessage = new EmailMessage(); EmailMessage.Body = form.Body + "<br/><br/><br/>Message Key:" + EmailMessage.UUID; EmailMessage.Subject = form.Subject; EmailMessage.EmailFrom = Cipher.Crypt(Globals.Application.AppSetting("AppKey"), form.EmailFrom.ToLower(), true); EmailMessage.UUIDType += "." + form.Type; if (form.Type?.ToLower() != "contactus") { EmailMessage.EmailTo = Globals.Application.AppSetting("SiteEmail"); } EmailMessage.DateCreated = DateTime.UtcNow; EmailMessage.IpAddress = ipAddress; EmailMessage.Status = "not_sent"; if (CurrentUser != null) { EmailMessage.CreatedBy = CurrentUser.UUID; EmailMessage.AccountUUID = CurrentUser.AccountUUID; } else { EmailMessage.CreatedBy = "ContactUsForm"; EmailMessage.AccountUUID = "ContactUsForm"; } UserManager um = new UserManager(Globals.DBConnectionKey, Request?.Headers?.Authorization?.Parameter); string toName = um.GetUserByEmail(EmailMessage.EmailTo)?.Name; string fromName = um.GetUserByEmail(form.EmailFrom)?.Name; EmailMessage.NameFrom = fromName; EmailMessage.NameTo = toName; if (EmailMessageManager.Insert(EmailMessage).Code == 500) { return(ServiceResponse.Error("Failed to save the email. Try again later.")); } EmailSettings settings = new EmailSettings(); settings.EncryptionKey = Globals.Application.AppSetting("AppKey"); settings.HostPassword = Globals.Application.AppSetting("EmailHostPassword"); settings.HostUser = Globals.Application.AppSetting("EmailHostUser"); settings.MailHost = Globals.Application.AppSetting("MailHost"); settings.MailPort = StringEx.ConvertTo <int>(Globals.Application.AppSetting("MailPort")); settings.SiteDomain = Globals.Application.AppSetting("SiteDomain"); settings.EmailDomain = Globals.Application.AppSetting("EmailDomain"); settings.SiteEmail = Globals.Application.AppSetting("SiteEmail"); settings.UseSSL = StringEx.ConvertTo <bool>(Globals.Application.AppSetting("UseSSL")); MailAddress ma = new MailAddress(settings.SiteEmail, settings.SiteEmail); MailMessage mail = new MailMessage(); mail.From = ma; // mail.ReplyToList.Add( ma ); mail.ReplyToList.Add(form.EmailFrom); mail.To.Add(EmailMessage.EmailTo); mail.Subject = EmailMessage.Subject; mail.Body = EmailMessage.Body + "<br/><br/><br/>IP:" + ipAddress; mail.IsBodyHtml = true; SMTP svc = new SMTP(Globals.DBConnectionKey, settings); return(svc.SendMail(mail)); } catch (Exception ex) { _fileLogger.InsertError(ex.DeserializeException(true), "SiteController", "SendMessage:" + JsonConvert.SerializeObject(form)); } return(ServiceResponse.Error("Failed to send message.")); }
private ServiceResult SendEmail(CartView cart, Order order, FinanceAccount account, string customerEmail, string status) { if (cart == null) { return(ServiceResponse.Error("Could not send email, cart was not set.")); } AppManager am = new AppManager(this._connectionKey, "web", this._sessionKey); string domain = am.GetSetting("SiteDomain")?.Value; string emailSubject = ""; string emailContent = ""; //todo put this in another function #region get email content function switch (status) { case StoreFlag.OrderStatus.Recieved: emailSubject = "Your " + domain + " order has been recieved."; DocumentManager dm = new DocumentManager(this._connectionKey, SessionKey); emailContent = dm.GetTemplate("EmailOrderReceived").Result?.ToString(); if (string.IsNullOrWhiteSpace(emailContent)) { return(ServiceResponse.Error("Failed to send email. Document not found.")); } //use view cart for details emailContent = emailContent.Replace("[Order.OrderID]", order.UUID); emailContent = emailContent.Replace("[Order.AddedDate]", order.DateCreated.ToShortDateString()); //See below: emailContent = emailContent.Replace( "[Order.Total]" , emailContent = emailContent.Replace("[PaymentType.Title]", cart.PaidType); emailContent = emailContent.Replace("[StoreManager.PayType]", account.CurrencyName); emailContent = emailContent.Replace("[StoreManager.PayTypeTotal]", order.Total.ToString()); //emailContent = emailContent.Replace( " ,PayTypeSubTotal); // emailContent = emailContent.Replace("[PayType.Address]", account. PayType.Address); emailContent = emailContent.Replace("[PayType.PictureUrl]", account.Image); emailContent = emailContent.Replace("[Settings.CurrencySymbol]", am.GetSetting("default.currency.symbol").Value); emailContent = emailContent.Replace("[Settings.SiteDomain]", domain); //todo paytype.address and qr code for btc. //todo bookmark latest currency symbol // string validationCode = Cipher.RandomString(12); // emailContent = emailContent.Replace("[Url.Unsubscribe]", "http://" + domain + "/FinanceAccount/ValidateEmail/?type=mbr&operation=mdel&code=" + validationCode); StringBuilder ShoppingCartItemsList = new StringBuilder(); foreach (dynamic item in cart.CartItems) { ShoppingCartItemsList.Append("<tr id=\"[item-ShoppingCartItem.Product.Id]\">".Replace("[item-ShoppingCartItem.Product.ProductID]", item.ItemUUID.ToString())); ShoppingCartItemsList.Append("<td align=\"center\">[ShoppingCartItem.Title]</td>".Replace("[ShoppingCartItem.Title]", item.Name.ToString())); ShoppingCartItemsList.Append("<td align=\"center\">[ShoppingCartItem.Quantity]</td>".Replace("[ShoppingCartItem.Quantity]", item.Quantity.ToString())); ShoppingCartItemsList.Append("<td align=\"center\">[ShoppingCartItem.Price]</td></tr>".Replace("[ShoppingCartItem.Price]", item.Price.ToString("c"))); } emailContent = emailContent.Replace("[ShoppingCartItemsList]", ShoppingCartItemsList.ToString()); emailContent = emailContent.Replace("[Order.SubTotal]", order.SubTotal.ToString("c")); emailContent = emailContent.Replace("[Order.Total]", order.Total.ToString("c")); #endregion break; } string appKey = am.GetSetting("AppKey")?.Value; string emailPassword = am.GetSetting("EmailHostPassword")?.Value; SMTP mailServer = new SMTP(this._connectionKey, new Models.Services.EmailSettings() { HostPassword = Cipher.Crypt(appKey, emailPassword, false), EncryptionKey = am.GetSetting("AppKey")?.Value, HostUser = am.GetSetting("EmailHostUser")?.Value, MailHost = am.GetSetting("MailHost")?.Value, MailPort = StringEx.ConvertTo <int>(am.GetSetting("MailPort")?.Value), SiteDomain = am.GetSetting("SiteDomain")?.Value, SiteEmail = am.GetSetting("SiteEmail")?.Value, UseSSL = StringEx.ConvertTo <bool>(am.GetSetting("UseSSL")?.Value) }); MailMessage mail = new MailMessage(); try { mail.From = new MailAddress(am.GetSetting("SiteEmail")?.Value); mail.ReplyToList.Add(mail.From); mail.To.Add(customerEmail); mail.Subject = emailSubject; mail.Body = emailContent; mail.IsBodyHtml = true; } catch (Exception ex) { Debug.Assert(false, ex.Message); this._logger.InsertError(ex.Message, "StoreManager", "SendMail"); return(ServiceResponse.Error("Failed to send email. ")); } ServiceResult res = mailServer.SendMail(mail); if (res.Code != 200) { Debug.Assert(false, mailServer.ErrorMessage); this._logger.InsertError(mailServer.ErrorMessage, "StoreManager", "SendMail"); return(ServiceResponse.Error("Failed to send email. ")); } return(ServiceResponse.OK()); }
private PayPalResponse DeserializeIpn(string response) { if (string.IsNullOrWhiteSpace(response)) { return(null); } PayPalResponse res = new PayPalResponse(); string[] kvp = response.Split('&'); if (kvp.Length == 0) { return(null); } for (int i = 0; i < kvp.Length; i++) { try { string[] tokens = kvp[i].Split('='); if (tokens.Length < 2) { continue; } string key = tokens[0].Trim().ToLower(); string value = tokens[1].Trim(); if (string.IsNullOrWhiteSpace(key) || string.IsNullOrWhiteSpace(value)) { continue; } switch (key) { case "mc_gross": res.mc_gross = StringEx.ConvertTo <decimal>(value); break; case "protection_eligibility": res.protection_eligibility = value; break; case "address_status": res.address_status = value; break; case "payer_id": res.payer_id = value; break; case "tax": res.tax = StringEx.ConvertTo <decimal>(value); break; case "address_street": res.address_street = value; break; case "payment_date": res.payment_date = value; break; case "payment_status": res.payment_status = value; break; case "charset": res.charset = value; break; case "address_zip": res.address_zip = value; break; case "first_name": res.first_name = value; break; case "mc_fee": res.mc_fee = StringEx.ConvertTo <decimal>(value); break; case "address_country_code": res.address_country_code = value; break; case "address_name": res.address_name = value; break; case "notify_version": res.notify_version = StringEx.ConvertTo <float>(value); break; case "custom": res.custom = value; break; //this is set to the cartUUID, the Order has a cartUUID field. Pull the order and update all the tables. see StoreManager.ProcessPayment() to figure out all the tables to update case "payer_status": res.payer_status = value; break; case "address_country": res.address_country = value; break; case "address_city": res.address_city = value; break; case "quantity": res.quantity = StringEx.ConvertTo <int>(value); break; case "verify_sign": res.verify_sign = value; break; case "payer_email": res.payer_email = value; break; case "txn_id": res.txn_id = value; break; case "payment_type": res.payment_type = value; break; case "last_name": res.last_name = value; break; case "address_state": res.address_state = value; break; case "receiver_email": res.receiver_email = value; break; case "payment_fee": res.payment_fee = StringEx.ConvertTo <decimal>(value); break; case "receiver_id": res.receiver_id = value; break; case "txn_type": res.txn_type = value; break; case "item_name": res.item_name = value; break; case "mc_currency": res.mc_currency = value; break; case "item_number": res.item_number = value; break; case "residence_country": res.residence_country = value; break; case "test_ipn": res.test_ipn = value; break; case "handling_amount": res.handling_amount = StringEx.ConvertTo <decimal>(value); break; case "transaction_subject": res.transaction_subject = value; break; case "payment_gross": res.payment_gross = StringEx.ConvertTo <decimal>(value); break; case "shipping": res.shipping = StringEx.ConvertTo <decimal>(value); break; } } catch (Exception ex) { Debug.Assert(false, ex.Message); _logger.InsertError(ex.Message + " index:" + i.ToString() + " response:" + response, "PaymentGatewayManager", "DeserializeIpn"); continue; } } return(res); }
public async Task <ServiceResult> SendEmailAsync() { var app = new AppManager(Globals.DBConnectionKey, "web", ""); string secret = app.GetSetting("AppKey")?.Value; var gsecred = Globals.Application.AppSetting("AppKey"); if (gsecred != secret) { throw new NotImplementedException(); } var encemail = Cipher.Crypt(secret, "*****@*****.**".ToLower(), true); encemail = Cipher.Crypt(secret, "*****@*****.**".ToLower(), true); encemail = Cipher.Crypt(secret, "*****@*****.**".ToLower(), true); encemail = Cipher.Crypt(secret, "*****@*****.**".ToLower(), true); if (CurrentUser == null) { return(ServiceResponse.Error("You must be logged in to access this function.")); } EmailSettings settings = new EmailSettings(); settings.FromUserUUID = CurrentUser.UUID; try { string content = await Request.Content.ReadAsStringAsync(); if (string.IsNullOrEmpty(content)) { return(ServiceResponse.Error("You must send valid email info.")); } var message = JsonConvert.DeserializeObject <EmailMessage>(content); if (string.IsNullOrWhiteSpace(message.SendTo)) { return(ServiceResponse.Error("You must send a user id for the message.")); } if (string.IsNullOrWhiteSpace(message.Body)) { return(ServiceResponse.Error("You must send comment in the message.")); } UserManager userManager = new UserManager(Globals.DBConnectionKey, Request.Headers?.Authorization?.Parameter); switch (message.Type?.ToUpper()) { case "ACCOUNT": var am = new AccountManager(Globals.DBConnectionKey, Request.Headers?.Authorization?.Parameter); var res = am.Get(message.SendTo); if (res.Code != 200) { return(res); } // Account account = (Account)res.Result; break; case "SUPPORT": //todo call api/Site/SendMessage break; case "USER": var resUserTO = userManager.Get(message.SendTo); if (resUserTO == null || resUserTO.Code != 200) { return(ServiceResponse.Error("User not found for user uuid.")); } var userTO = (User)resUserTO.Result; // THIS SHOULD BE sand, EMAILLOG.userUUID should be this. if (message.SendTo != userTO.UUID) { return(ServiceResponse.Error("User id doesn't match the addressed user id.")); } //if (message.SendFrom != CurrentUser.UUID) // return ServiceResponse.Error("Current user doesn't match logged in user."); //may just set the from user = currentuser break; case "PROFILE": ProfileManager profileManager = new ProfileManager(Globals.DBConnectionKey, Request.Headers?.Authorization?.Parameter); var dbProfile = profileManager.Get(message.SendTo); if (dbProfile.Code != 200) { return(ServiceResponse.Error("Profile not found.")); } var node = userManager.Get(((Profile)dbProfile.Result).UserUUID); if (node.Code != 200) { return(node); } var user = (User)node.Result; settings.ToUserUUID = user.UUID; if (string.IsNullOrWhiteSpace(message.Subject)) { message.Subject = "You have received a message from " + CurrentUser.Name; } break; default: var res2 = userManager.GetUser(message.SendTo, false); if (res2.Code != 200) { return(res2); } var toUser = (User)res2.Result; if (toUser == null) { return(ServiceResponse.Error("User not found.")); } settings.ToUserUUID = toUser.UUID; break; } string hostPassword = Cipher.Crypt(Globals.Application.AppSetting("AppKey"), Globals.Application.AppSetting("EmailHostPassword"), false); settings.EncryptionKey = Globals.Application.AppSetting("AppKey"); settings.HostPassword = hostPassword;// Globals.Application.AppSetting("EmailHostPassword"); settings.HostUser = Globals.Application.AppSetting("EmailHostUser"); settings.MailHost = Globals.Application.AppSetting("MailHost"); settings.MailPort = StringEx.ConvertTo <int>(Globals.Application.AppSetting("MailPort")); settings.SiteDomain = Globals.Application.AppSetting("SiteDomain"); settings.EmailDomain = Globals.Application.AppSetting("EmailDomain"); settings.SiteEmail = Globals.Application.AppSetting("SiteEmail"); settings.UseSSL = StringEx.ConvertTo <bool>(Globals.Application.AppSetting("UseSSL")); message.IpAddress = network.GetClientIpAddress(this.Request); return(await userManager.SendEmailAsync(message, settings)); } catch (Exception ex) { Debug.Assert(false, ex.Message); return(ServiceResponse.Error("Failed to send message.", ex.DeserializeException())); } }
public ServiceResult SetUserFlag(string userUUID, string userFlag, string flagValue, bool authorize = true) { User u; using (var context = new TreeMonDbContext(this._connectionKey)) { u = context.GetAll <User>().FirstOrDefault(uw => uw.UUID == userUUID); } if (u == null) { return(ServiceResponse.Error("User not found.")); } if (authorize) { if (!this.DataAccessAuthorized(u, "PATCH", false)) { return(ServiceResponse.Error("You are not authorized this action.")); } } if (string.IsNullOrWhiteSpace(userFlag) || string.IsNullOrWhiteSpace(flagValue)) { return(ServiceResponse.Error("You are missing a flag or value to set.")); } switch (userFlag.ToUpper()) { // CTRL+SHIFT+U. to toggle case case "PROVIDERNAME": u.ProviderName = flagValue; break; case "PROVIDERUSERKEY": u.ProviderUserKey = flagValue; break; case "ACTIVE": u.Active = StringEx.ConvertTo <bool>(flagValue); break; case "DELETED": u.Deleted = StringEx.ConvertTo <bool>(flagValue); break; case "PRIVATE": u.Private = StringEx.ConvertTo <bool>(flagValue); break; case "ANONYMOUS": u.Anonymous = StringEx.ConvertTo <bool>(flagValue); break; case "APPROVED": u.Approved = StringEx.ConvertTo <bool>(flagValue); break; case "BANNED": u.Banned = StringEx.ConvertTo <bool>(flagValue); break; case "LOCKEDOUT": u.LockedOut = StringEx.ConvertTo <bool>(flagValue); if (u.LockedOut == true) { u.LastLockoutDate = DateTime.UtcNow; } break; case "ONLINE": u.Online = StringEx.ConvertTo <bool>(flagValue); break; //case "SITEADMIN": break;// backlog this requires security validation before implementing since its a very powerfull account default: return(ServiceResponse.Error("Invalid flag.")); } u.LastUpdatedDate = DateTime.UtcNow; using (var context = new TreeMonDbContext(this._connectionKey)) { if (context.Update <User>(u) < 0) { return(ServiceResponse.Error("Error occurred saving user " + u.Name)); } } _logger.InsertInfo("userUUID:" + userUUID + ",userFlag:" + userFlag + ",flagValue:" + flagValue, "UserManager", "SetUserFlag"); return(ServiceResponse.OK("User " + u.Name + " updated.")); }