After the proposal expires, it still allows users to vote, which I believe is to update the status of the proposal from “In Progress” to “Expired”, which is fine, but ideally it should throw an error in the contract that the voting is over, otherwise the user thinks that their vote was counted and the proposal should have been passed (if quorum reached) but they see "Expired".
After the proposal expires, it still allows users to vote, which I believe is to update the status of the proposal from “In Progress” to “Expired”, which is fine, but ideally it should throw an error in the contract that the voting is over, otherwise the user thinks that their vote was counted and the proposal should have been passed (if quorum reached) but they see "Expired".