Example #1
0
        //Low-level methods
        public ILogin FindLogin(IEntitySession session, string userName, string password, Guid?tenantId)
        {
            var context = session.Context;

            context.ValidateNotEmpty(userName, ClientFaultCodes.ValueMissing, "UserName", null, "UserName may not be empty");
            context.ValidateNotEmpty(password, ClientFaultCodes.ValueMissing, "Password", null, "Password may not be empty");
            context.ThrowValidation();
            userName = CheckUserName(context, userName);
            var userNameHash  = _hashService.ComputeHash(userName);
            var tenantIdValue = tenantId == null ? Guid.Empty : tenantId.Value;
            var qryLogins     = from lg in session.EntitySet <ILogin>()
                                where lg.UserNameHash == userNameHash && lg.UserName == userName
                                select lg;

            // Match password
            using (session.WithElevatedRead()) {
                var login = qryLogins.FirstOrDefault();
                return(login);
            }
        }