Exemplo n.º 1
0
        public HttpResponseMessage Login(ApiAuthLogin user)
        {
            HttpResponseMessage response     = new HttpResponseMessage();
            MemberSystem        memberSystem = new MemberSystem();
            string messages = "";

            bool isLoginSuccessful = memberSystem.Login(user.Account, user.Password);

            if (isLoginSuccessful)
            {
                ChoySession session = ChoySession.Current;
                messages            = $"Member({session.LoginId})have successfully logged in !!";
                response.StatusCode = HttpStatusCode.OK; // http status code 200
            }
            else
            {
                messages            = "Incorrect account or password";
                response.StatusCode = HttpStatusCode.NotFound; // http status code 404
            }

            var result = new
            {
                Success  = isLoginSuccessful,
                Messages = messages
            };

            response.Content = new StringContent(JsonConvert.SerializeObject(result));
            response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

            return(response);
        }
Exemplo n.º 2
0
        public ActionResult Logout()
        {
            MemberSystem memberSystem = new MemberSystem();

            memberSystem.Logout();

            return(RedirectToAction("Index"));
        }
        public void CanCreateMember()
        {
            //Arrange
            var expectedResult = "Isabella";
            var sut            = new MemberSystem(new SqlPartyRepository(_context));
            //Act
            var partyGuid = sut.Create(expectedResult, "870310");
            var party     = _context.Players.FirstOrDefault(x => x.PartyId == partyGuid);

            //Assert
            Assert.Equal(expectedResult, party.Name);
        }
        public void CanSearchMemberByGuid()
        {
            //Arrange
            var sut = new MemberSystem(new SqlPartyRepository(_context));
            //Act
            var player = new Party
            {
                PartyId = Guid.NewGuid(),
                Name    = "Isabella",
                LegalId = "870310"
            };

            _context.Players.Add(player);
            _context.SaveChanges();
            var searchResult = sut.GetById(player.PartyId);

            //Assert
            Assert.Equal(player.Name, searchResult.Name);
        }
Exemplo n.º 5
0
        public HttpResponseMessage Register(ApiAuthRegister data)
        {
            Env                 env       = new Env();
            SimpleJws           jws       = new SimpleJws();
            HttpResponseMessage response  = new HttpResponseMessage();
            string              token     = data.Token;
            bool                isSuccess = true;
            string              messages  = "";

            if (token == null) // 缺乏 token
            {
                isSuccess           = false;
                messages            = "You don't have permission to access this server.";
                response.StatusCode = HttpStatusCode.Unauthorized; // 401
            }
            else if (!jws.Validate(token, env.SecretKey))          // 缺乏 token
            {
                isSuccess           = false;
                messages            = "註冊連結已失效!!!";
                response.StatusCode = HttpStatusCode.Unauthorized; // 401
            }
            else if (data.Password.Length < 6 || data.Password.Length > 18)
            {
                isSuccess           = false;
                messages            = "Your password must be between 6 and 18 characters";
                response.StatusCode = HttpStatusCode.BadRequest; // 400
            }
            else
            {
                MemberSystem memberSystem       = new MemberSystem();
                Dictionary <string, object> jwt = jws.Decode(token);
                if (!jwt.ContainsKey("Email") || !jwt.ContainsKey("Gender") || !jwt.ContainsKey("Birthday"))
                {
                    isSuccess           = false;
                    messages            = "Invalid operation.";
                    response.StatusCode = HttpStatusCode.BadRequest; // 400
                }
                else
                {
                    string name = jwt.ContainsKey("UserName")
            ? (string)jwt["UserName"]
            : null;
                    DateTime now    = DateTime.Now;
                    Member   member = new Member
                    {
                        Email         = (string)jwt["Email"],
                        Psw           = ChoyPassword.Hash(data.Password, TimeConverter.ToTimestamp(now)),
                        NickName      = name,
                        Gender        = (bool)jwt["Gender"],
                        Bday          = TimeConverter.ToDateTime((long)jwt["Birthday"]),
                        ContactEmail  = (string)jwt["Email"],
                        CreateAt      = now,
                        ProfilePic    = memberSystem.GetFileBytes("\\Images\\carot.png"),
                        ImageMimeType = "image/png",
                        PerCode       = 0,
                        IsSuspended   = false,
                        LastLogInTime = now
                    };
                    if (!memberSystem.Register(member))
                    {
                        isSuccess           = false;
                        messages            = "Registration failed";
                        response.StatusCode = HttpStatusCode.InternalServerError; // 500
                    }
                    else
                    {
                        isSuccess           = true;
                        messages            = "Registration success";
                        response.StatusCode = HttpStatusCode.OK; // 200
                    }
                }
            }

            var result = new
            {
                Success  = isSuccess,
                Messages = messages
            };

            response.Content = new StringContent(JsonConvert.SerializeObject(result));
            response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

            return(response);
        }
Exemplo n.º 6
0
        public void Logout()
        {
            MemberSystem memberSystem = new MemberSystem();

            memberSystem.Logout();
        }
Exemplo n.º 7
0
        public HttpResponseMessage VerifyEmailAddress(ApiAuthVerifyEmailAddress user)
        {
            MemberSystem        memberSystem = new MemberSystem();
            HttpResponseMessage response     = new HttpResponseMessage();
            string link = HttpContext.Current.Request.Url.AbsoluteUri.Replace(HttpContext.Current.Request.Url.PathAndQuery, $"/Home/Index/#/check");

            /**
             * memberSystem.SendValidationEmailByAPI() 回復所代表意義
             * return 0 : 表示 Email 寄送成功
             * return 1 : 表示 Email 不能為空 || Email 格式錯誤
             * return 2 : 表示 Email 已被註冊
             * return 3 : 表示 UserName 不能超過 15 個字
             * return 4 : 表示 Birthday 不能為空 || Birthday 不能晚於今日
             */
            int    statusCode = memberSystem.SendValidationEmailByAPI(user.Email, user.UserName, user.Gender, user.Birthday, link);
            bool   isSuccess  = true;
            string messages   = "";

            switch (statusCode)
            {
            case 0:
                messages            = "The verification letter has been sent.";
                response.StatusCode = HttpStatusCode.OK; // 200
                break;

            case 1:
                isSuccess           = false;
                messages            = "Failed to send verification letter.Email is required or email format is wrong.";
                response.StatusCode = HttpStatusCode.BadRequest; // 400
                break;

            case 2:
                isSuccess           = false;
                messages            = "Failed to send verification letter.This email is already registered.";
                response.StatusCode = HttpStatusCode.BadRequest; // 400
                break;

            case 3:
                isSuccess           = false;
                messages            = "Failed to send verification letter.Your username cannot be longer than 15 characters.";
                response.StatusCode = HttpStatusCode.BadRequest; // 400
                break;

            case 4:
                isSuccess           = false;
                messages            = "Failed to send verification letter.Birthday is required and no later than today. ";
                response.StatusCode = HttpStatusCode.BadRequest; // 400
                break;

            default:
                isSuccess           = false;
                messages            = "Failed to send verification letter.Unknown mistake";
                response.StatusCode = HttpStatusCode.InternalServerError; // 500
                break;
            }

            var result = new
            {
                Success  = isSuccess,
                Messages = messages
            };

            response.Content = new StringContent(JsonConvert.SerializeObject(result));
            response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
            return(response);
        }