Nutzermigration
This commit is contained in:
parent
d577ca4e40
commit
52de2bc847
|
|
@ -6,17 +6,19 @@
|
|||
<small>Die Seite nicht verlassen oder neu laden!</small>
|
||||
<hr>
|
||||
<div>
|
||||
<h5 id="groups_process">Gruppen anlegen...</h5>
|
||||
<h5 id="groups_process">Es werden {{groups|length}} Gruppen angelegt...</h5>
|
||||
<div id="groups_process_groups"></div>
|
||||
<h5 id="user_process" style="display: none;">Es werden {{users|length}} Benutzer angelegt und in die Gruppen gepackt. Die Nutzer müssen sich dann ein neues Passwort setzen.</h5>
|
||||
<div id="user_process_user" style="display: none;"></div>
|
||||
</div>
|
||||
<h5 id="migfinished" style="display: none;">Migration vollständig. Bitte diese Seite ausdrucken oder Speichern. Ein erneuter Import ist nicht möglich!</h5>
|
||||
<script>
|
||||
var userids = [{% for us in users %} {{us.pk}} {% if forloop.counter0 < users|length %}, {% endif %} {% endfor %}];
|
||||
var groupids = [{% for g in groups %} "{{g.name}}" {% if forloop.counter0 < groups|length %}, {% endif %} {% endfor %}];
|
||||
var userids = [{% for us in users %} "{{us.pk}}" {% if forloop.counter < users|length %}, {% endif %} {% endfor %}];
|
||||
var groupids = [{% for g in groups %} "{{g.name}}" {% if forloop.counter < groups|length %}, {% endif %} {% endfor %}];
|
||||
|
||||
$(document).ready(function(){
|
||||
// FIRST CALL GROUPS
|
||||
// FIRST CALL GROUPS, When Groups finished User will call by Groups
|
||||
createAgencyGroups(groupids[0]);
|
||||
console.log('{{ nclink }}');
|
||||
})
|
||||
|
||||
var groupcounter = 0;
|
||||
|
|
@ -39,6 +41,44 @@
|
|||
if(groupcounter < groupids.length){
|
||||
createAgencyGroups(groupids[groupcounter]);
|
||||
}
|
||||
else {
|
||||
createUsers(userids[0]);
|
||||
}
|
||||
}
|
||||
},
|
||||
error: function(e){
|
||||
console.log(e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
var usercounter = 0;
|
||||
function createUsers(userid){
|
||||
console.log(userid);
|
||||
$("#user_process").show();
|
||||
$("#user_process_user").show();
|
||||
$.ajax({
|
||||
url: "{% url 'api:apiadduser' %}",
|
||||
headers: {
|
||||
'Authorization':'Token {{ ncid }}',
|
||||
"Access-Control-Allow-Origin" : "*"
|
||||
},
|
||||
method: 'POST',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
'agencyid' : {{agency.pk}},
|
||||
'userid' : userid
|
||||
},
|
||||
success: function(data){
|
||||
if(data['status'] == true){
|
||||
$("#user_process_user").append('<p>' + data['message'] + "</p>");
|
||||
usercounter += 1;
|
||||
if(usercounter < userids.length){
|
||||
createUsers(userids[usercounter]);
|
||||
}
|
||||
else {
|
||||
$("#migfinished").show();
|
||||
}
|
||||
}
|
||||
},
|
||||
error: function(e){
|
||||
|
|
|
|||
|
|
@ -15,9 +15,7 @@ urlpatterns = [
|
|||
# MIGRATION
|
||||
path('migrateagencyusers/<int:pk>', views.migrateAgencyUsers, name="api-migrateagencyusers"),
|
||||
path('addgroup/', views.NCAddGroup, name="apiaddgroup"),
|
||||
|
||||
|
||||
|
||||
path('adduser/', views.NCAddUser, name="apiadduser"),
|
||||
|
||||
# EXTERNAL FROM NC
|
||||
path('logout/<str:uid>', views.apilogout, name="api-logout"),
|
||||
|
|
|
|||
51
api/views.py
51
api/views.py
|
|
@ -113,6 +113,8 @@ def userChangedInNc(request, uid, sid):
|
|||
js = json.dumps(xpars)
|
||||
final_json = json.loads(js)
|
||||
new_displayname = final_json['ocs']['data']['displayname'].split(" ")
|
||||
new_email = final_json['ocs']['data']['email']
|
||||
user.email = new_email
|
||||
user.first_name = new_displayname[0]
|
||||
new_last_name = ""
|
||||
new_displayname.pop(0)
|
||||
|
|
@ -133,6 +135,10 @@ def get_random_number(length = 6):
|
|||
result_str = ''.join(random.choice("0123456789") for i in range(length))
|
||||
return result_str
|
||||
|
||||
def get_random_password(length = 6):
|
||||
result_str = ''.join(random.choice("!_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJLMNOPQRSTUVWXYZ0123456789") for i in range(length))
|
||||
return result_str
|
||||
|
||||
# Returns a new groupID for NC by Groupname and Agency
|
||||
def create_group_id(agencygroupname, agency):
|
||||
newgroupid = ""
|
||||
|
|
@ -189,10 +195,51 @@ def NCAddGroup(request):
|
|||
'Authorization': 'Bearer ' + request.COOKIES['nc_session_id']
|
||||
}
|
||||
r = requests.post(settings.NEXTCLOUD_URL + "apps/agency/regr", data=data, headers=headers)
|
||||
print(r.text)
|
||||
|
||||
request_status = True
|
||||
return JsonResponse({'status' : True, 'message': 'Gruppe ' + aggroup.agencygroupname + ' erzeugt - ID: ' + newgroupid})
|
||||
else:
|
||||
trycounter += 1
|
||||
newgroupid = create_group_id(aggroup.agencygroupname, agency)
|
||||
return JsonResponse({"status" : "NO AUTH"})
|
||||
|
||||
@api_view(['POST'], )
|
||||
def NCAddUser(request):
|
||||
if request.method == "POST":
|
||||
agency = Agency.objects.get(pk=request.POST.get('agencyid'))
|
||||
user = User.objects.get(pk=request.POST['userid'])
|
||||
# Check, that only users in the same agency can do that!
|
||||
if(user.profile.agency == agency):
|
||||
# Load all groups the User is in and get AgencyGroup for NC-Group-Name
|
||||
groups = []
|
||||
for g in user.groups.all():
|
||||
groups.append(AgencyGroup.objects.get(group=g).nc_name)
|
||||
|
||||
password = get_random_password(50)
|
||||
userid = user.username
|
||||
displayName = user.first_name + " " + user.last_name
|
||||
email = user.email
|
||||
|
||||
# Data for the new User
|
||||
data = {
|
||||
"userid": userid,
|
||||
"password": password,
|
||||
"displayName": displayName,
|
||||
"email":email,
|
||||
"groups[]":groups
|
||||
}
|
||||
|
||||
headers = {
|
||||
'Accept' : 'application/json',
|
||||
'Access-Control-Allow-Headers' : 'OCS-APIRequest',
|
||||
'OCS-APIRequest' : 'true'
|
||||
}
|
||||
|
||||
# Request for adding the new User
|
||||
r = requests.post(settings.NEXTCLOUD_URL + "ocs/v1.php/cloud/users", data=data, headers=headers, auth=(settings.NEXTCLOUD_USER_API, settings.NEXTCLOUD_PW_API))
|
||||
r_status = json.loads(r.text)
|
||||
if(r_status['ocs']['meta']['statuscode'] == 100):
|
||||
return JsonResponse({'status' : True, 'message': 'Benutzer ' + user.first_name + " " + user.last_name + ' angelegt und in die Gruppen gepackt.'})
|
||||
else:
|
||||
return JsonResponse({'status' : True, 'message': 'Benutzer ' + user.first_name + " " + user.last_name + ' konnte nicht angelegt werden. Bitte manuell prüfen!'})
|
||||
|
||||
return JsonResponse({"status" : "NO AUTH"})
|
||||
Loading…
Reference in New Issue