public static async Task <DBLogin> LoginUserNameAsync(Factory ctx, string username) { var dbLogin = new DBLogin(); dbLogin.UserName = username; (dbLogin.APIKeyHash, dbLogin.APIKey) = HashUtils.CreateAPIKey256(dbLogin.UserName); if (await SP_Account_LoginAsync(ctx, dbLogin).ConfigureAwait(false)) { return(dbLogin); } return(null); }
public void SendVerificationEmail(long AccountID, string UserName, string Email, string spath) { DBEmailVerification model = GetDBEmailVerification(AccountID, null, Email); if (model != null && model.IsVerified) { throw new InvalidOperationException("Already Verified"); } SmtpClient smtp = new SmtpClient("smtp.gmail.com"); smtp.EnableSsl = true; smtp.Port = 587; smtp.Credentials = new NetworkCredential(Ctx.Config.sEmailVerifyAccountName, Ctx.Config.sEmailVerifyAccountPassword); byte[] VerificationHash = null; string VerificationKey = null; if (model == null) { (VerificationHash, VerificationKey) = HashUtils.CreateAPIKey256(AccountID + "#" + Email); } else { VerificationHash = model.VerificationHash; VerificationKey = model.VerificationKey; } smtp.Send("*****@*****.**", Email, "UniEvents: Verify Email", $@" UserName: {UserName} Email: {Email} <a href='{spath}?id={AccountID}&key={WebUtility.UrlEncode(VerificationKey)}'>Click here to verify email with UniEvents!</a> "); if (model == null) { using (SqlCommand cmd = new SqlCommand("[dbo].[sp_EmailVerification_Add]", new SqlConnection(Ctx.Config.dbUniHangoutsWrite)) { CommandType = CommandType.StoredProcedure }) { cmd.AddParam(ParameterDirection.Input, SqlDbType.BigInt, nameof(DBEmailVerification.AccountID), AccountID); cmd.AddParam(ParameterDirection.Input, SqlDbType.VarChar, nameof(DBEmailVerification.@VerificationKey), @VerificationKey); cmd.AddParam(ParameterDirection.Input, SqlDbType.Binary, nameof(DBEmailVerification.@VerificationHash), @VerificationHash); cmd.AddParam(ParameterDirection.Input, SqlDbType.VarChar, nameof(DBEmailVerification.Email), Email); cmd.AddParam(ParameterDirection.Input, SqlDbType.SmallDateTime, nameof(DBEmailVerification.Date), DateTime.UtcNow); cmd.ExecuteProcedure(); } } }