Пример #1
0
        private ResponseData FileLoader(string filename, string ext, ExtensionInfo extInfo)
        {
            ResponseData ret;

            if (File.Exists(filename))
            {
                ret = new ResponseData()
                {
                    Data        = File.ReadAllBytes(filename),
                    ContentType = extInfo.ContentType,
                    Encoding    = Encoding.UTF8,
                    Status      = ServerStatus.OK
                };
            }
            else
            {
                ret = new ResponseData()
                {
                    Status = ServerStatus.NotFound
                };
            }
            return(ret);
        }
Пример #2
0
        // POST -> api/login | username and password in form data
        public static ResponseData LoginHandler(Session session, Dictionary <string, string> kwargs)
        {
            string username     = kwargs["username"];
            string password     = kwargs["password"];
            string submitButton = kwargs["operation"];
            string Status       = "";
            var    user         = JSONFileService.GetAll <User>().FirstOrDefault(user => user.Username == username);

            if (user != null)
            {
                if (submitButton == "register")
                {
                    Status = "Username already taken!";
                }
                else if (AesEncryptor.Compare(password, user))
                {
                    //successful login, redirect user to the app
                    session.Authorized = true;
                    session.SessionData.TryAdd("UserID", user.ID.ToString());
                    session.SessionData.TryAdd("Username", user.Username);
                    var dataPacket = new JSONPacket();
                    if (user.Icon != null)
                    {
                        dataPacket.Redirect = "/welcome";
                        dataPacket.HasIcon  = true;
                    }
                    else
                    {
                        dataPacket.HasIcon = false;
                    }
                    var ret = new ResponseData()
                    {
                        Data        = Encoding.UTF8.GetBytes(dataPacket.ToString()),
                        ContentType = "text/json",
                        Complete    = true,
                        Status      = ServerStatus.OK,
                        Encoding    = Encoding.UTF8
                    };
                    return(ret);
                }
                else
                {
                    Status = "Wrong password!";
                }
            }
            else
            {
                if (submitButton == "login")
                {
                    Status = "No such user exists!";
                }
                else
                {
                    if (ParseCredentials(username, password))
                    {
                        Status = "Registered new user!";
                        user   = new User
                        {
                            Username    = username,
                            Password    = password,
                            DateCreated = DateTime.UtcNow.ToString()
                        };
                        AesEncryptor.Encrypt(user);
                        JSONFileService.Add(user);
                    }
                    else
                    {
                        Status = "Username and password cannot be empty!";
                    }
                }
            }
            var dataWrapper = new JSONPacket()
            {
                Data = Status, Redirect = null, HasIcon = true
            };

            return(new ResponseData()
            {
                ContentType = "text/json",
                Encoding = Encoding.UTF8,
                Data = Encoding.UTF8.GetBytes(dataWrapper.ToString()),
                Status = ServerStatus.OK,
                Complete = true
            });
        }