Esempio n. 1
0
        public override async Task <Reply> UpdatePassword(UpdatePasswordRequest request, ServerCallContext context)
        {
            var reply = new Reply();

            if (!PwdEncryptor.ValidateUserName(request.NewPassword))
            {
                reply.Error = Error.InvalidArguments;
                return(reply);
            }

            var user = await _loginUserService.GetUser(context.GetHttpContext());

            if (user == null || user.Adm)
            {
                reply.Error = Error.InvalidOperation;
                return(reply);
            }

            var userEntity = await _usersService.All().FirstOrDefaultAsync(u =>
                                                                           u.Id == user.Id && u.Password == PwdEncryptor.Encrypt(request.Password));

            if (userEntity == null)
            {
                reply.Error = Error.InvalidUserOrPwd;
                return(reply);
            }

            userEntity.Password = PwdEncryptor.Encrypt(request.NewPassword);
            await _usersService.Update(userEntity);

            await _loginUserService.ClearUser(context.GetHttpContext());

            return(reply);
        }
Esempio n. 2
0
        public override async Task <UserReply> Add(AddRequest request, ServerCallContext context)
        {
            var reply = new UserReply();

            if (!PwdEncryptor.ValidateUserName(request.Id) || !PwdEncryptor.ValidateEmail(request.Email))
            {
                reply.Error = Error.InvalidArguments;
                return(reply);
            }

            var user = await _userService.GetUser(context.GetHttpContext());

            if (user == null)
            {
                reply.Error = Error.NeedLogin;
                return(reply);
            }

            if (!user.HasWritePermission())
            {
                reply.Error = Error.NoPermission;
                return(reply);
            }

            var existed = await _service.All().FirstOrDefaultAsync(u => u.Id == request.Id || u.Email == request.Email);

            if (existed != null)
            {
                reply.Error = Error.EntityConflict;
                return(reply);
            }

            var password = string.IsNullOrWhiteSpace(request.Password)
                ? Guid.NewGuid().ToString().Replace("-", "").Substring(0, 8)
                : request.Password;
            await _emailService.Send(request.Email, "User register", $"{password}");

            var newUser = new User
            {
                Id                 = request.Id,
                Email              = request.Email,
                Status             = 0,
                Created            = DateTime.Now,
                Authorised         = 0,
                AuthorisionExpired = DateTime.Now,
                Password           = PwdEncryptor.Encrypt(password)
            };

            newUser = await _service.Add(newUser);

            reply.User = Converter(newUser);
            return(reply);
        }
Esempio n. 3
0
        public override async Task <Reply> UpdateName(UpdateNameRequest request, ServerCallContext context)
        {
            var reply = new Reply();

            if (!PwdEncryptor.ValidateUserName(request.NewName))
            {
                reply.Error = Error.InvalidArguments;
                return(reply);
            }

            var user = await _loginUserService.GetUser(context.GetHttpContext());

            if (user == null || user.Adm)
            {
                reply.Error = Error.InvalidOperation;
                return(reply);
            }

            var userEntity = await _usersService.All().FirstOrDefaultAsync(u => u.Id == user.Id);

            if (userEntity == null)
            {
                reply.Error = Error.InvalidOperation;
                return(reply);
            }

            if (userEntity.Id == request.NewName)
            {
                return(reply);
            }

            var existed = await _usersService.All().FirstOrDefaultAsync(u => u.Id == request.NewName);

            if (existed != null)
            {
                reply.Error = Error.InvalidOperation;
                return(reply);
            }

            userEntity.Id = request.NewName;
            await _usersService.Update(userEntity);

            user.Id = request.NewName;
            await _loginUserService.SetUser(context.GetHttpContext(), user);

            return(reply);
        }