예제 #1
0
        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);
        }
예제 #2
0
        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();
                }
            }
        }