mirror of
https://github.com/minio/minio.git
synced 2025-11-23 11:07:50 -05:00
allow non-loggedin users to access public bucket (#5570)
* conditionally render main action buttons - Make bucket action will be available only for loggedIn users - File upload button will be avaialble for loggedIn users and non-loggedIn users if the prefix is writable * select the bucket and prefix from the url When the url contains bucket and prefix, it will be selected by default instead of the first bucket from the list. * show BucketSearch only for LoggedIn users * allow non-LoggedIn users to access public bucket * removed unused Router imports * fix test case failures in BucketList.test.js * remove dupicate minioBrowserPrefix from url since history is already initialized with minioBrowserPrefix, no need to use it in push or replace * remove unused match from App component * remove unused minioBrowserPrefix imports
This commit is contained in:
committed by
Harshavardhana
parent
bb0adea494
commit
416841869a
@@ -26,7 +26,8 @@ jest.mock("../../web", () => ({
|
||||
return Promise.resolve({
|
||||
objects: [{ name: "test1" }, { name: "test2" }],
|
||||
istruncated: false,
|
||||
nextmarker: "test2"
|
||||
nextmarker: "test2",
|
||||
writable: false
|
||||
})
|
||||
}),
|
||||
RemoveObject: jest.fn(({ bucketName, objects }) => {
|
||||
@@ -124,6 +125,10 @@ describe("Objects actions", () => {
|
||||
{
|
||||
type: "objects/SET_SORT_ORDER",
|
||||
sortOrder: false
|
||||
},
|
||||
{
|
||||
type: "objects/SET_PREFIX_WRITABLE",
|
||||
prefixWritable: false
|
||||
}
|
||||
]
|
||||
return store.dispatch(actionsObjects.fetchObjects()).then(() => {
|
||||
@@ -143,6 +148,10 @@ describe("Objects actions", () => {
|
||||
objects: [{ name: "test1" }, { name: "test2" }],
|
||||
marker: "test2",
|
||||
isTruncated: false
|
||||
},
|
||||
{
|
||||
type: "objects/SET_PREFIX_WRITABLE",
|
||||
prefixWritable: false
|
||||
}
|
||||
]
|
||||
return store.dispatch(actionsObjects.fetchObjects(true)).then(() => {
|
||||
@@ -197,6 +206,16 @@ describe("Objects actions", () => {
|
||||
expect(window.location.pathname.endsWith("/test/abc/")).toBeTruthy()
|
||||
})
|
||||
|
||||
it("create objects/SET_PREFIX_WRITABLE action", () => {
|
||||
const store = mockStore()
|
||||
const expectedActions = [
|
||||
{ type: "objects/SET_PREFIX_WRITABLE", prefixWritable: true }
|
||||
]
|
||||
store.dispatch(actionsObjects.setPrefixWritable(true))
|
||||
const actions = store.getActions()
|
||||
expect(actions).toEqual(expectedActions)
|
||||
})
|
||||
|
||||
it("creates objects/REMOVE action", () => {
|
||||
const store = mockStore()
|
||||
const expectedActions = [{ type: "objects/REMOVE", object: "obj1" }]
|
||||
|
||||
@@ -27,6 +27,7 @@ describe("objects reducer", () => {
|
||||
currentPrefix: "",
|
||||
marker: "",
|
||||
isTruncated: false,
|
||||
prefixWritable: false,
|
||||
shareObject: {
|
||||
show: false,
|
||||
object: "",
|
||||
@@ -123,6 +124,14 @@ describe("objects reducer", () => {
|
||||
expect(newState.isTruncated).toBeFalsy()
|
||||
})
|
||||
|
||||
it("should handle SET_PREFIX_WRITABLE", () => {
|
||||
const newState = reducer(undefined, {
|
||||
type: actions.SET_PREFIX_WRITABLE,
|
||||
prefixWritable: true
|
||||
})
|
||||
expect(newState.prefixWritable).toBeTruthy()
|
||||
})
|
||||
|
||||
it("should handle SET_SHARE_OBJECT", () => {
|
||||
const newState = reducer(undefined, {
|
||||
type: actions.SET_SHARE_OBJECT,
|
||||
|
||||
@@ -32,6 +32,7 @@ export const REMOVE = "objects/REMOVE"
|
||||
export const SET_SORT_BY = "objects/SET_SORT_BY"
|
||||
export const SET_SORT_ORDER = "objects/SET_SORT_ORDER"
|
||||
export const SET_CURRENT_PREFIX = "objects/SET_CURRENT_PREFIX"
|
||||
export const SET_PREFIX_WRITABLE = "objects/SET_PREFIX_WRITABLE"
|
||||
export const SET_SHARE_OBJECT = "objects/SET_SHARE_OBJECT"
|
||||
export const CHECKED_LIST_ADD = "objects/CHECKED_LIST_ADD"
|
||||
export const CHECKED_LIST_REMOVE = "objects/CHECKED_LIST_REMOVE"
|
||||
@@ -80,6 +81,11 @@ export const fetchObjects = append => {
|
||||
dispatch(setSortBy(""))
|
||||
dispatch(setSortOrder(false))
|
||||
}
|
||||
dispatch(setPrefixWritable(res.writable))
|
||||
})
|
||||
.catch(err => {
|
||||
dispatch(alertActions.set({ type: "danger", message: err.message }))
|
||||
history.push("/login")
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -136,6 +142,11 @@ export const setCurrentPrefix = prefix => {
|
||||
}
|
||||
}
|
||||
|
||||
export const setPrefixWritable = prefixWritable => ({
|
||||
type: SET_PREFIX_WRITABLE,
|
||||
prefixWritable
|
||||
})
|
||||
|
||||
export const deleteObject = object => {
|
||||
return function(dispatch, getState) {
|
||||
const currentBucket = getCurrentBucket(getState())
|
||||
|
||||
@@ -32,6 +32,7 @@ export default (
|
||||
currentPrefix: "",
|
||||
marker: "",
|
||||
isTruncated: false,
|
||||
prefixWritable: false,
|
||||
shareObject: {
|
||||
show: false,
|
||||
object: "",
|
||||
@@ -78,6 +79,11 @@ export default (
|
||||
marker: "",
|
||||
isTruncated: false
|
||||
}
|
||||
case actionsObjects.SET_PREFIX_WRITABLE:
|
||||
return {
|
||||
...state,
|
||||
prefixWritable: action.prefixWritable
|
||||
}
|
||||
case actionsObjects.SET_SHARE_OBJECT:
|
||||
return {
|
||||
...state,
|
||||
|
||||
@@ -19,3 +19,5 @@ import { createSelector } from "reselect"
|
||||
export const getCurrentPrefix = state => state.objects.currentPrefix
|
||||
|
||||
export const getCheckedList = state => state.objects.checkedList
|
||||
|
||||
export const getPrefixWritable = state => state.objects.prefixWritable
|
||||
|
||||
Reference in New Issue
Block a user