internal IEmail Create(IDataStore dataStore, Random random, IApplication application, IUserBasic user , EmailPriority emailPriority, EmailStatus emailStatus) { EmailManager manager = new EmailManager(dataStore); Email email = new Email(application.ApplicationId , "Subject " + random.Next(1000000, 10000000) , "Body " + +random.Next(1000000, 10000000) , "*****@*****.**" , "*****@*****.**" , user.UserId , emailStatus , emailPriority , EmailType.UserCreated); BusinessObjectActionReport <DataRepositoryActionStatus> report = manager.Create(email); Assert.AreEqual(DataRepositoryActionStatus.Success, report.Status); IEmail dsEmail = manager.GetEmail(email.EmailId); Assert.IsNotNull(dsEmail); return(dsEmail); }
public override void Process(ApiServer server) { if (server.AssertServerSetup(this) || server.AssertAccountNotNull() || server.AssertUserOnline() || server.AssertEmailSet()) { return; } if (!EmailEssentials.IsValid(server.Account.AccountInfo.Email)) { ApiError.Throw(ApiErrorCode.InvalidEmailAddress, server, "Email address is invalid."); return; } server.Account.AuthenticationCode = SecurityManager.GenerateSecurityCode(); server.Account.AuthenticationId = ApiRequestId.ConfirmPasswordChange; server.Account.AuthenticationTime = DatabaseEssentials.GetTimeStamp(); server.Account.Password = SecurityManager.ScryptHash(Password); string name = string.IsNullOrEmpty(server.Account.AccountInfo.Name) ? "user" : server.Account.AccountInfo.Name; EmailManager emailManager = EmailManager.Create(Subject.ChangePassword, server.Account.AccountInfo.Email, name, server.Account.AuthenticationCode); bool success = emailManager.Send(); if (!success) { ApiError.Throw(ApiErrorCode.InternalServerError, server, "Failed to send confirmation email."); return; } GenericSuccessResponse apiResponse = new GenericSuccessResponse(ResponseId.PasswordChange, true); SerializedApiResponse serializedApiResponse = SerializedApiResponse.Create(apiResponse); string json = serializedApiResponse.Serialize(); server.Send(json); server.UnitTesting.MethodSuccess = true; }
public override void Process(ApiServer server) { if (server.AssertServerSetup(this) || server.AssertAccountNull()) { return; } using DatabaseManager databaseManager = new DatabaseManager(server); string query = "SELECT isOnline, name, hid, id FROM Tbl_user WHERE email = \'" + DatabaseEssentials.Security.Sanitize(Email) + "\';"; SqlApiRequest sqlRequest = SqlApiRequest.Create(SqlRequestId.GetDataArray, query, 4); SqlDataArrayResponse dataArrayResponse = databaseManager.AwaitDataArrayResponse(sqlRequest, out bool success); if (!success) { return; } string[] data = dataArrayResponse.Result; if (!dataArrayResponse.Success || data.Length != sqlRequest.ExpectedColumns) { ApiError.Throw(ApiErrorCode.InvalidUser, server, "No account is associated with this email address."); return; } string isOnline = data[0]; string encryptedName = data[1]; string userid = data[2]; server.Account = new Account(null, false, data[3]); if (!isOnline.Equals("0")) { ApiError.Throw(ApiErrorCode.AlreadyOnline, server, "Already logged in from another device."); return; } AesContext aesContext = new AesContext(userid); string name = aesContext.DecryptOrDefault(encryptedName); server.Account = new Account { AuthenticationCode = SecurityManager.GenerateSecurityCode(), AuthenticationId = ApiRequestId.ConfirmPasswordReset, AuthenticationTime = DatabaseEssentials.GetTimeStamp() }; EmailManager emailManager = EmailManager.Create(Subject.ResetPassword, Email, string.IsNullOrEmpty(name) ? "user" : name, server.Account.AuthenticationCode); emailManager.Send(); GenericSuccessResponse response = new GenericSuccessResponse(ResponseId.PasswordReset, true); SerializedApiResponse serializedApiResponse = SerializedApiResponse.Create(response); string json = serializedApiResponse.Serialize(); server.Send(json); server.UnitTesting.MethodSuccess = true; }
public override void Process(ApiServer server) { if (server.AssertServerSetup(this) || server.AssertAccountNull()) { return; } if (!EmailEssentials.IsValid(Email)) { ApiError.Throw(ApiErrorCode.InvalidEmailAddress, server, "Email address is invalid."); return; } bool success; using (DatabaseManager databaseManager = new DatabaseManager(server)) { if (!databaseManager.CheckEmailAvailable(Email, out success)) { if (!success) { return; } ApiError.Throw(ApiErrorCode.InvalidEmailAddress, server, "Email address already in use."); return; } } string passwordHash = SecurityManager.ScryptHash(Password); server.Account = new Account(new AccountInfo(null, null, null, null, null, null, null, null, null, null, null, null, null, 50, null, Email, true, true), false, string.Empty) { Password = passwordHash, AuthenticationCode = SecurityManager.GenerateSecurityCode(), AuthenticationId = ApiRequestId.ConfirmAccount, AuthenticationTime = DatabaseEssentials.GetTimeStamp() }; EmailManager emailManager = EmailManager.Create(Subject.CreateAccount, Email, "new user", server.Account.AuthenticationCode); success = emailManager.Send(); if (!success) { ApiError.Throw(ApiErrorCode.InternalServerError, server, "Failed to send confirmation email."); return; } GenericSuccessResponse apiResponse = new GenericSuccessResponse(ResponseId.CreateAccount, true); SerializedApiResponse serializedApiResponse = SerializedApiResponse.Create(apiResponse); string json = serializedApiResponse.Serialize(); server.Send(json); server.UnitTesting.MethodSuccess = true; }