Nutzermigration
This commit is contained in:
parent
d577ca4e40
commit
52de2bc847
|
|
@ -6,17 +6,19 @@
|
||||||
<small>Die Seite nicht verlassen oder neu laden!</small>
|
<small>Die Seite nicht verlassen oder neu laden!</small>
|
||||||
<hr>
|
<hr>
|
||||||
<div>
|
<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>
|
<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>
|
</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>
|
<script>
|
||||||
var userids = [{% for us in users %} {{us.pk}} {% if forloop.counter0 < users|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.counter0 < groups|length %}, {% endif %} {% endfor %}];
|
var groupids = [{% for g in groups %} "{{g.name}}" {% if forloop.counter < groups|length %}, {% endif %} {% endfor %}];
|
||||||
|
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
// FIRST CALL GROUPS
|
// FIRST CALL GROUPS, When Groups finished User will call by Groups
|
||||||
createAgencyGroups(groupids[0]);
|
createAgencyGroups(groupids[0]);
|
||||||
console.log('{{ nclink }}');
|
|
||||||
})
|
})
|
||||||
|
|
||||||
var groupcounter = 0;
|
var groupcounter = 0;
|
||||||
|
|
@ -39,6 +41,44 @@
|
||||||
if(groupcounter < groupids.length){
|
if(groupcounter < groupids.length){
|
||||||
createAgencyGroups(groupids[groupcounter]);
|
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){
|
error: function(e){
|
||||||
|
|
|
||||||
|
|
@ -15,9 +15,7 @@ urlpatterns = [
|
||||||
# MIGRATION
|
# MIGRATION
|
||||||
path('migrateagencyusers/<int:pk>', views.migrateAgencyUsers, name="api-migrateagencyusers"),
|
path('migrateagencyusers/<int:pk>', views.migrateAgencyUsers, name="api-migrateagencyusers"),
|
||||||
path('addgroup/', views.NCAddGroup, name="apiaddgroup"),
|
path('addgroup/', views.NCAddGroup, name="apiaddgroup"),
|
||||||
|
path('adduser/', views.NCAddUser, name="apiadduser"),
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# EXTERNAL FROM NC
|
# EXTERNAL FROM NC
|
||||||
path('logout/<str:uid>', views.apilogout, name="api-logout"),
|
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)
|
js = json.dumps(xpars)
|
||||||
final_json = json.loads(js)
|
final_json = json.loads(js)
|
||||||
new_displayname = final_json['ocs']['data']['displayname'].split(" ")
|
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]
|
user.first_name = new_displayname[0]
|
||||||
new_last_name = ""
|
new_last_name = ""
|
||||||
new_displayname.pop(0)
|
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))
|
result_str = ''.join(random.choice("0123456789") for i in range(length))
|
||||||
return result_str
|
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
|
# Returns a new groupID for NC by Groupname and Agency
|
||||||
def create_group_id(agencygroupname, agency):
|
def create_group_id(agencygroupname, agency):
|
||||||
newgroupid = ""
|
newgroupid = ""
|
||||||
|
|
@ -189,10 +195,51 @@ def NCAddGroup(request):
|
||||||
'Authorization': 'Bearer ' + request.COOKIES['nc_session_id']
|
'Authorization': 'Bearer ' + request.COOKIES['nc_session_id']
|
||||||
}
|
}
|
||||||
r = requests.post(settings.NEXTCLOUD_URL + "apps/agency/regr", data=data, headers=headers)
|
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})
|
return JsonResponse({'status' : True, 'message': 'Gruppe ' + aggroup.agencygroupname + ' erzeugt - ID: ' + newgroupid})
|
||||||
else:
|
else:
|
||||||
trycounter += 1
|
trycounter += 1
|
||||||
newgroupid = create_group_id(aggroup.agencygroupname, agency)
|
newgroupid = create_group_id(aggroup.agencygroupname, agency)
|
||||||
return JsonResponse({"status" : "NO AUTH"})
|
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