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; } 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; }