Exemple #1
0
        public static void FillUserFromModel(this UserDto user, UserModel loginModel, AuthModel authModel)
        {
            var access = new AccessDto
            {
                Id = authModel.AccessId,
                Type = (loginModel.Remember ? AuthType.Cookie : AuthType.Session)
            };

            switch (loginModel.LoggedUntil)
            {
                case LoggedUntil.Hour:
                    access.ValidUntil = DateTime.UtcNow.AddHours(1);
                    break;
                case LoggedUntil.Day:
                    access.ValidUntil = DateTime.UtcNow.AddDays(1);
                    break;
                case LoggedUntil.Week:
                    access.ValidUntil = DateTime.UtcNow.AddDays(7);
                    break;
                case LoggedUntil.Month:
                    access.ValidUntil = DateTime.UtcNow.AddMonths(1);
                    break;
                case LoggedUntil.Year:
                    access.ValidUntil = DateTime.UtcNow.AddYears(1);
                    break;
                default:
                    throw new ArgumentOutOfRangeException();
            }

            user.AccessList.Add(access);
        }
Exemple #2
0
        public bool SendAuthenticationEmail(UserDto user, AuthModel authModel, string loginUrl)
        {
            var access = user.AccessList.First(x => x.Id.Equals(authModel.AccessId));

            try
            {
                var body = "Hi!\n" +
                           "\n" +
                           "Browse to the URL below to manage your MCNotifier account.\n" +
                           "\n" +
                           $"{loginUrl}\n" +
                           "\n" +
                           $"This access link will expire on {access.ValidUntil} (UTC).\n" +
                           "\n" +
                           "Regards,\n" +
                           "The MCNotifier Team.";
                const string subject = "Access to your MCNotifier account";
                var message = BuildMessage(user.Email, subject, body);
                SendEmail(message);
            }
            catch (Exception)
            {
                return false;
                // log me
            }

            return true;
        }
Exemple #3
0
        public AccessModel GetUserAccess(AuthModel auth)
        {
            var user = GetUser(auth.Email);
            if (user == null) throw new Exception("User not found!");

            var access = user.AccessList.FirstOrDefault(x => x.Id.Equals(auth.AccessId) && x.ValidUntil > DateTime.UtcNow);
            var accessModel = _mapper.Map<AccessModel>(access) ?? new AccessModel { Type = AuthType.Invalid };
            accessModel.Email = user.Email;
            return accessModel;
        }
Exemple #4
0
        public bool Login(UserModel model)
        {
            var authModel = new AuthModel(model.Email);
            var user = GetUser(model.Email);

            if (user == null)
            {
                user = new UserDto();
                user.FillNewUserFromModel(model, authModel);
            }
            else
            {
                user.FillUserFromModel(model, authModel);
            }

            //SetWatchlist(model, user, false);

            if (!SetUser(user))
            {
                throw new Exception("Could not save user to database!");
            }

            var loginAuth = _encryptionService.Encrypt(authModel);
            var loginUrl = _context.Request.GetHostUrl() + "/User/Auth?token=" + loginAuth;
            return _emailService.SendAuthenticationEmail(user, authModel, loginUrl);
        }
Exemple #5
0
 public static void FillNewUserFromModel(this UserDto user, UserModel loginModel, AuthModel authModel)
 {
     user.Email = loginModel.Email;
     user.FillUserFromModel(loginModel, authModel);
 }