That's an important point to consider, right. It boils down to the question if the system actually posts what the user intended to do, and if it is allowed (as in not illegal). So... let's discuss it a little. :)
Basically, you can post at any date at any rate. More or less. If you enter an invoice for a date that is closed, the system will look up the exchange rate for the date and apply it. You can change the rate in the journal or document as long as the currency pair allows it. To any rate. And you can post it. As long as you move the posting date and not recalculate the exchange rates, the system will post what the user actually wanted, only at a date where he is allowed to do it. So... it's allowed.
Now to the more problematic parts: Applying can only be done at the exchange rate of the application date. So, we can't allow to move the application date if it is in a closed period. It basically wouldn't matter if all entries have the same currency (it always nets to the exchange rate difference between invoice and payment, regardless of the actual application date (and rate)), but it is a real issue in mixed-currency scenarios.
Also, "Adjust Exchange Rate" and "Close Income Statement" must take place at the date that was specified.
Now, how do you implement this. First we need to talk about what a "closed" period is. In NAV, there is normally no such thing for the G/L. As long as the posting date range is open to you, you can post it. If you post into a period marked as closed, it will marked as "Prior-Year entry". You actually can code really "closed" periods, and even close them by month. But not in standard NAV.
If it's not "closed period", it is "different allowed date range". So you need to calculate the first allowed posting date for the user, check if it is after your desired posting date, and use this instead. I would suggest to use a tolerance period, to avoid really large date differences. This calculation should take place where it is allowed, not in CU12. Like, CU13,80,90,442,444,5980. And it needs to check if the document or journal line to post has currency and application information in it.