public async Task <object> RegistUserAsync([FromBody] UserRegistModel model)
        {
            if (string.IsNullOrWhiteSpace(model.UserName))
            {
                return(BadRequest(WebResultHelper.JsonMessageResult("用户名不能为空")));
            }

            if (string.IsNullOrWhiteSpace(model.Password))
            {
                return(BadRequest(WebResultHelper.JsonMessageResult("密码不能为空")));
            }
            GeneralResponse result = await userService.RegistUserAsync(new Extension.UserRegistModel
            {
                Name       = model.UserName,
                Password   = model.Password,
                PositionId = model.PositionId
            });

            if (result.IsSuccess)
            {
                return(Ok());
            }

            return(BadRequest(WebResultHelper.JsonMessageResult(result.Message)));
        }
Exemplo n.º 2
0
        /// <summary>
        /// 注册用户
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public async Task <GeneralResponse> RegistUserAsync(UserRegistModel model)
        {
            RegistUserRequest user = new RegistUserRequest
            {
                Name       = model.Name,
                Password   = model.Password,
                PositionId = model.PositionId
            };
            GeneralResponse result = await userClient.RegistUserAsync(user);

            return(result);
        }
Exemplo n.º 3
0
        /**
         * Registo de novos utilizadores. Devem ser recebidos o username, email e password para criar o novo utilizador.
         * Quando é guardado um novo utilizador na base de dados, o email e username são transformados em upper case, e
         * a password é encriptada.
         */
        public async override Task <UserRegistModel> Regist(UserRegistLookupModel request, ServerCallContext context)
        {
            UserRegistModel output = new UserRegistModel();

            // Transformação dos carateres do email e username para upper case
            string email    = request.Email.ToUpper();
            string username = request.Username;//.ToUpper();

            // Verificações se um outro utilizador tem o mesmo email e/ou o mesmo username
            Models.User u1 = new Models.User(), u2 = new Models.User();
            u1 = _context.User.FirstOrDefault(u => u.Username == username);
            u2 = _context.User.FirstOrDefault(u => u.Email == email);

            // Um utilizador tem o mesmo username
            if (u1 != null)
            {
                if (u2 == null)
                {
                    output.Valid = -3; // Um utilizador tem apenas o mesmo username
                }
                else
                {
                    output.Valid = -1; // Um utilizador tem o mesmo username e email
                }
            }
            // Um utilizador tem o mesmo email
            else if (u2 != null)
            {
                output.Valid = -2; // Um utilizador tem apenas o mesmo email
            }
            // Nenhum utilizador tem o mesmo username e/ou email
            else
            {
                // Encriptação da password
                SHA512 sha512   = SHA512Managed.Create();
                byte[] bytes    = sha512.ComputeHash(Encoding.UTF8.GetBytes(request.Password));
                string password = Convert.ToBase64String(bytes);

                Models.User u = new Models.User
                {
                    Username = username,
                    Email    = email,
                    Password = password
                };

                // Verifica e garante que a BD existe
                _context.Database.EnsureCreated();

                // Guarda-se o novo utilizador na base de dados
                _context.User.Add(u);
                _context.SaveChanges();

                // Regista o utilizador no banco de créditos
                await APIServerCommunication.RegisterUser(u.Username, u.Id);

                // Envia-se uma mensagem uma mensagem de confirmação de registo ao cliente
                output.Valid = 1;
            }

            return(await Task.FromResult(output));
        }